node.js - Nodejs (Hapi.js) ve Prisma ile Docker'da ConnectionError
Nodejs uygulamamı bir dockera koymak istiyorum. Npm run build ve start ile dağıttığımda ona istek gönderebiliyorum.
Ama bir docker imajı oluşturduğumda sorunlar yaşıyorum:
Öncelikle Dockerfile'ımda EXPOSE 8080 var. Sonra docker run -p=3000:8080 --env-file .env my-docker-file çalıştırıyorum. Bundan sonra sunucunun http://localhost:3000 üzerinde çalıştığı bilgisi geliyor.
Biliyorum, localhost:3000 sadece docker dosyasında. Ama en azından docker çalışıyor.
Komutu http localhost:3000 (veya tarayıcıyı) kullandığımda, http:error: ConnectionError: ('Connection aborted.', RemoteDisconnected('Uzak uç yanıt vermeden bağlantıyı kapattı')) URL: http://localhost:3000/ adresine GET isteği yaparken oluştu hatasını alıyorum.
Biri neyin yanlış gittiğine dair bir fikri var mı??? Hiçbir fikrim yok.
Beni doğru yönlendiren tüm ipuçları için teşekkürler.
Benim Dockerfile'ım:
## 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 startCevap #1
Bir Dockerfile kullanıyorsanız, önce görüntünüzü oluşturmanız daha iyidir.
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"]
Dockerfile'ınızın bulunduğu konumdan:
docker build -t your-image-name .docker run -p 3000:8080 --env-file .env your-image-nameCevap #2
IP adresini kontrol ettin mi?
Node projemi ilk Docker'a dağıttığımda, ona erişemedim çünkü Node projem localhost isteklerini dinliyordu. Ancak ağınızı host olarak belirtmezseniz, Docker konteyneriniz alt ağınızda başka bir IP adresine sahip olacaktır.
Node projelerimin dinlediği IP adresini 0.0.0.0 olarak değiştirdim ve bundan sonra Docker konteynerinde çalışan Node projeme bağlanabildim.
