Docker выход с кодом 0 при попытке использовать nodejs, nodemon и подпапку - PullRequest
2 голосов
/ 01 апреля 2020

У меня есть эта настройка, которая работает нормально, но недавно я переместил все свои коды в подпапку functions.

. пн go работает нормально.

Примечание: я создаю подпапку, потому что пытаюсь использовать firebase.

docker -compose.yml

version: "3"
services:
    web:
        build: .
        ports:
            - "8080:8080"
        links:
            - mongo
        volumes:
            - .:/usr/src/app
    mongo:
        image: mongo
        ports:
            - "27018:27017"
        volumes:
            -  mongodata:/data/db
volumes:
    mongodata:

Dockerfile

FROM node:latest

WORKDIR /usr/src/app

COPY functions/package*.json ./

RUN npm install

COPY . .

EXPOSE 8080

RUN npm install -g nodemon

CMD [ "nodemon", "functions/index.js" ]

.dockerignore

node_modules
npm-debug.log

enter image description here

1 Ответ

2 голосов
/ 01 апреля 2020

Я проверил текущую ситуацию следующим образом:

docker-compose run web bash

В bash я проверил структуру папок с ls, и они приходили из папки root , Таким образом, даже если вы скопируете свою папку функций в docker - образы томов переопределяют папку docker -image.

Я пытался изменить значение web -> volume на - .functions:/usr/src/app в docker -compose .yml, но это не сработало.

Итак, в конце концов я переместил файлы Dockerfile и docker-compose.yml в папку functions. И изменил сценарии как

Dockerfile

FROM node:latest

WORKDIR /usr/src/app

COPY . .

RUN npm install

EXPOSE 8080

RUN npm install -g nodemon
CMD nodemon "index.js"

docker -compose.yml

version: "3"
services:
  web:
    build: .
    ports:
      - "8080:8080"
    links:
      - mongo
    volumes:
      - .:/usr/src/app
  mongo:
    image: mongo
    ports:
      - "27018:27017"

В Мой терминал с этой командой:

cd functions && docker-compose -f ./docker-compose.yml up --build --force-recreate

Он работает нормально, но я бы порекомендовал вам не перемещать ваше приложение в другую папку и иметь под npm проект. В будущем у вас будут другие проблемы из-за этого, например, при запуске ваших тестов. Вам нужно найти способ сохранить их в папке root.

...