Weboldal keresés

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 start

Vá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-name

Vá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.