Aller au contenu

Déployer Node.js et Next.js

Une API Node.js ou une application Next.js : le Dockerfile, le port, les variables lues au build, et la base.

Vérifié le 23 oct. 2026 sur la console

Fransys déploie une image Docker. Un exemple pour Next.js, avec la sortie standalone (output: 'standalone' dans next.config.js) :

FROM node:22-alpine AS build
WORKDIR /app
COPY package.json package-lock.json ./
RUN npm ci
COPY . .
RUN npm run build
FROM node:22-alpine
WORKDIR /app
ENV NODE_ENV=production PORT=3000 HOSTNAME=0.0.0.0
COPY --from=build /app/.next/standalone ./
COPY --from=build /app/.next/static ./.next/static
COPY --from=build /app/public ./public
EXPOSE 3000
CMD ["node", "server.js"]

Pour une API Node.js, le principe est le même : installer, construire si besoin, puis lancer le serveur. Écoutez sur 0.0.0.0, pas sur localhost.

Ajoutez une Application, branchez le dépôt et la CI (Depuis GitHub ou GitLab), puis réglez le Port du conteneur sur 3000 (ou celui de votre EXPOSE).

Next.js inscrit les variables NEXT_PUBLIC_… dans le code au moment du build. La CI de Fransys ne transmet pas encore les variables au build :

  • gardez ces valeurs dans votre code ou dans un fichier .env.production du dépôt, si elles ne sont pas secrètes ;
  • ou lisez-les au démarrage, côté serveur.

Les autres variables (accès à la base, clés d’API) se règlent dans Variables, protégées si ce sont des secrets.

Ajoutez une base PostgreSQL reliée à l’application, puis regardez dans Variables les noms reçus. Si votre ORM attend une seule URL (DATABASE_URL pour Prisma, par exemple), composez-la avec les références :

DATABASE_URL=postgresql://${USER}:${PASSWORD}@${HOST}:${PORT}/${DATABASE}

en remplaçant chaque nom par celui de la variable reçue, et cochez Autoriser les références.

Dans Commandes de déploiement, à Après la première installation et Après une mise à jour : par exemple npx prisma migrate deploy.

Un worker (BullMQ, par exemple) : faites lire un rôle à votre point d’entrée, puis copiez le service avec ce rôle. Voir Application.