node.js - שגיאת חיבור ב-Docker עם Nodejs (Hapi.js) ו-Prisma
אני רוצה להכניס את אפליקציית Nodejs שלי לדוקר. בעת פריסה שלה באמצעות npm run build ו-start אני יכול לשלוח לה בקשות.
אבל כאשר אני יוצר תמונת דוקר אני נתקל בבעיות:
קודם כל יש לי EXPOSE 8080 בקובץ Dockerfile שלי. לאחר מכן אני מריץ docker run -p=3000:8080 --env-file .env my-docker-file. אחרי זה אני מקבל את המידע שהשרת רץ על http://localhost:3000.
אני יודע ש-localhost:3000 הוא רק בקובץ הדוקר. אבל לפחות הדוקר רץ.
כאשר אני משתמש בפקודה http localhost:3000 (או בדפדפן) אני מקבל http:error: ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response')) בעת ביצוע בקשת GET ל-URL: http://localhost:3000/.
יש למישהו רעיון מה הולך לא נכון??? אין לי מושג.
תודה על כל הרמזים שמכוונים אותי לכיוון הנכון.
קובץ ה-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 startתשובה #1
אם אתה משתמש ב-Dockerfile, עדיף קודם לבנות את התמונה שלך.
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 שלך:
docker build -t your-image-name .docker run -p 3000:8080 --env-file .env your-image-nameתשובה #2
האם בדקת את כתובת ה-IP?
כאשר פרסמתי לראשונה את פרויקט ה-Node שלי ל-Docker, גם אני לא יכולתי לגשת אליו, כי פרויקט ה-Node שלי הקשיב לבקשות ל-localhost. אבל אם אתה לא מגדיר את הרשת שלך כ-host, למיכל Docker שלך יהיה כתובת IP אחרת בתת-הרשת שלך.
שיניתי את כתובת ה-IP שהפרויקטים של Node שלי מאזינים לה ל-0.0.0.0 ואחרי זה יכולתי להתחבר לפרויקט ה-Node שלי שרץ בתוך קונטיינר של Docker.
