यह अजीब है, मुझे docker-compose build चलाते समय कोई त्रुटि नहीं दिखाई दी, लेकिन जब मैं कंटेनर में गया, तो मुझे node_modules फ़ोल्डर नहीं दिखाई दिया, केवल package.json और package-lock.json फ़ाइलें। जब मैं docker-compose build चलाता हूं तो कोई भी लॉग सामान्य रूप से दिखाई देता है। उदाहरण के लिए:

....
added 552 packages from 678 contributors and audited 4007 packages in 11.2s
found 0 vulnerabilities
....

मेरा डॉकरफाइल:

FROM node:10

ENV APP_PATH /app
WORKDIR $APP_PATH

COPY ./app_front/package*.json ./

RUN npm install -g ts-node typescript
RUN npm install

COPY . .

EXPOSE 3000
CMD [ "npm", "run", "start" ]

और docker-compose फ़ाइल

version: "3.5"
services:
    mysql:
        image: mysql:5.7
        container_name: racer_mysql
        restart: always
        environment:
          MYSQL_DATABASE: xxxx
          MYSQL_USER: "xxxx"
          MYSQL_PASSWORD: "xxxx"
          MYSQL_ROOT_PASSWORD: xxxx
        ports:
          - "3306:3306"
        expose:
          - "3306"
        volumes:
          - ./docker/database:/var/lib/mysql
          - ./docker/mysql_init:/docker-entrypoint-initdb.d
    app_front:
        container_name: app_front
        build:
          context: .
          dockerfile: ./docker/app_front/Dockerfile
        volumes:
          - ./app_front:/app_front
        ports:
          - "3000:3000"

नोट: लेकिन जब मैं docker-compose में कई कमांड जोड़ता हूं, तो यह काम करता है। लेकिन मैं संकुल को Dockerfile में स्थापित करना चाहता हूं, न कि docker-compose फ़ाइल में।

       command:
          - /bin/bash
          - -c
          - |
            npm install
            npm start

इस मुद्दे के साथ मेरी समस्या बिल्कुल वैसी ही है, मैंने कोशिश की है, लेकिन बिना सफलता। किसी भी सलाह का स्वागत है!

0
Tran B. V. Son 19 अगस्त 2019, 08:29

2 जवाब

सबसे बढ़िया उत्तर

मुझे लगता है कि आप निर्माण प्रक्रिया में अपना App /app_front/ फ़ोल्डर में बनाते हैं, फिर आप उस फ़ोल्डर की सभी फाइलों का उपयोग करके ""ओवरराइटिंग" हटाते हैं:

volumes:
          - ./app_front:/app_front

आपके compose में, मेरा सुझाव है कि आप volumes अनुभाग को हटा दें और पुनः प्रयास करें।

1
LinPy 19 अगस्त 2019, 08:36

क्या हो रहा है COPY . . छवि में आपकी नोड_मॉड्यूल निर्देशिका को अधिलेखित कर रहा है। उसी निर्देशिका में एक .dockerignore फ़ाइल बनाएँ, जिसमें आपका Dockerfile है और node_modules को अनदेखा करें।

1
peterevans 19 अगस्त 2019, 09:19