node.js - Kapcsolódási hiba Dockerben Nodejs (Hapi.js) és Prisma használatával
Szeretném a Nodejs alkalmazásomat Dockerbe helyezni. Amikor az npm run build és start parancsokkal telepítem, tudok küldeni kéréseket neki.
De amikor Docker képet készítek, problémáim adódnak:
Először is van egy EXPOSE 8080 a Dockerfile-omban. Ezután futtatom a docker run -p=3000:8080 --env-file .env my-docker-file parancsot. Ezután az az információ jön, hogy a szerver a http://localhost:3000 címen fut.
Tudom, hogy a localhost:3000 csak a Dockerfile-ban van. De legalábbis a Docker fut.
Amikor a http localhost:3000 parancsot használom (vagy a böngészőt), a következő hibát kapom: http:error: ConnectionError: ('Connection aborted.', RemoteDisconnected('A távoli vég bezárta a kapcsolatot válasz nélkül')) egy GET kérés végrehajtása során a következő URL-re: http://localhost:3000/.
Van valakinek ötlete, mi mehet félre??? Fogalmam sincs.
Köszönöm minden olyan tippet, ami a helyes irányba terel.
Az én Dockerfile-om:
## 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 startVálasz #1
Ha Dockerfile-t használsz, először jobb, ha felépíted a képedet.
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"]
A helyről, ahol a Dockerfile fájlja található:
docker build -t your-image-name .docker run -p 3000:8080 --env-file .env your-image-nameVálasz #2
Ellenőrizted az IP-címet?
Amikor először telepítettem a Node projektemet Dockerre, én sem tudtam hozzáférni, mert a Node projektem a localhost kérésekre hallgatott. De ha nem adod meg a hálózatod hostként, a Docker konténerednek lesz egy másik IP címe az alhálózatodban.
Megváltoztattam a Node projektjeim figyelő IP-címét 0.0.0.0-re, és ezután csatlakozni tudtam a Docker konténerben futó Node projektemhez.
