node.js - Erreur de connexion dans Docker avec Nodejs (Hapi.js) et Prisma
Je voudrais mettre mon application Nodejs dans un Docker. Lors du déploiement via npm run build et start, je peux lui envoyer des requêtes.
Mais lors de la création d'une image Docker, j'ai des problèmes :
Tout d'abord, j'ai un EXPOSE 8080 dans mon Dockerfile. Ensuite, je lance docker run -p=3000:8080 --env-file .env mon-fichier-docker. Après cela, j'obtiens l'information que le serveur fonctionne sur http://localhost:3000.
Je sais que localhost:3000 est uniquement dans le fichier Docker. Mais au moins, le Docker fonctionne.
Lorsque j'utilise la commande http localhost:3000 (ou le navigateur), je reçois http : erreur : ConnectionError : ('Connexion interrompue.', RemoteDisconnected('Le côté distant a fermé la connexion sans réponse')) lors d'une requête GET vers l'URL : http://localhost:3000/.
Quelqu'un a-t-il une idée de ce qui ne va pas ??? Je n'ai aucune idée.
Merci pour tous les indices qui me dirigent dans la bonne direction.
Mon Dockerfile :
## this is the stage one , also know as the build step
FROM node:12.17.0-alpine as builder
WORKDIR /app
COPY package*.json ./
COPY prisma ./prisma/
COPY tsconfig.json .
COPY src ./src/
COPY tests ./tests/
RUN npm install
RUN npx prisma generate
COPY . .
RUN npm run build
## this is stage two , where the app actually runs
FROM node:12.17.0-alpine
COPY --from=builder /app/node_modules ./node_modules
COPY --from=builder /app/package*.json ./
COPY --from=builder /app/dist ./dist
EXPOSE 8080
CMD npm startRéponse #1
Si vous utilisez un Dockerfile, il vaut mieux d'abord construire votre image.
FROM node:12.17.0-alpine as builder
WORKDIR /app
COPY . .
RUN npm install
RUN npx prisma generate
RUN npm run build
## this is stage two , where the app actually runs
FROM node:12.17.0-alpine
COPY --from=builder /app/node_modules ./node_modules
COPY --from=builder /app/package*.json ./
COPY --from=builder /app/dist ./dist
EXPOSE 8080
CMD ["npm","start"]
À partir de l'emplacement où se trouve votre Dockerfile :
docker build -t your-image-name .docker run -p 3000:8080 --env-file .env your-image-nameRéponse #2
Avez-vous vérifié l'adresse IP ?
Lorsque j'ai déployé mon projet Node sur Docker pour la première fois, je ne pouvais pas y accéder non plus, car mon projet Node écoutait les requêtes sur localhost. Mais si vous ne spécifiez pas votre réseau comme hôte, votre conteneur Docker aura une autre adresse IP dans votre sous-réseau.
J'ai changé l'adresse IP d'écoute de mes projets Node en 0.0.0.0 et après cela, j'ai pu me connecter à mon projet Node s'exécutant dans un conteneur Docker.
