Ошибка при использовании docker-compose и nodemon - PullRequest
0 голосов
/ 22 сентября 2018

Я использую docker-compose и nodemon для моего разработчика.моя фс выглядит так:

├── code
│   ├── images
│   │   ├── api
│   │   ├── db
│   └── topology
│       └── docker-compose.yml

Обычно, когда я запускаю docker-compose up --build, файлы копируются с моего локального компьютера в контейнеры.Поскольку я нахожусь в режиме разработки, я не хочу запускать docker-compose up --build каждый раз, поэтому я использую volume для совместного использования каталога между моим локальным компьютером и контейнером.Я провожу несколько исследований, и вот что я получаю: API, Dockerfile:

FROM node:8

RUN mkdir -p /usr/src/app

WORKDIR /usr/src/app

COPY . /usr/src/app

RUN npm install nodemon -g --save
RUN npm install 
CMD [ "nodemon",  "app.js" ]

DB, Dockerfile:

FROM mongo:3.2-jessie

docker-compose.yml

version: '2'
services:
  api:
    build: ../images/api
    volumes:
        - .:/usr/src/app
    ports:
     - "7000:7000"
    links: ["db"]

  db:
    build: ../images/db
    ports:
     - "27017:27017"

Проблема в том, что при запуске docker-compose up --build
у меня появляется эта ошибка:

 ---> 327987c38250
Removing intermediate container f7b46029825f
Step 7/7 : CMD nodemon app.js
 ---> Running in d8430d03bcd2
 ---> ee5de77d78eb
Removing intermediate container d8430d03bcd2
Successfully built ee5de77d78eb
Recreating topology_db_1
Recreating topology_api_1
Attaching to topology_db_1, topology_api_1
db_1   | 2018-09-22T10:08:41.679+0000 I CONTROL  [initandlisten] MongoDB starting : pid=1 port=27017 dbpath=/data/db 64-bit host=5b93871d0f4f
db_1   | 2018-09-22T10:08:41.679+0000 I CONTROL  [initandlisten] db version v3.2.21
db_1   | 2018-09-22T10:08:41.679+0000 I CONTROL  [initandlisten] git version: 1ab1010737145ba3761318508ff65ba74dfe8155
db_1   | 2018-09-22T10:08:41.679+0000 I CONTROL  [initandlisten] OpenSSL version: OpenSSL 1.0.1t  3 May 2016
db_1   | 2018-09-22T10:08:41.679+0000 I CONTROL  [initandlisten] allocator: tcmalloc
db_1   | 2018-09-22T10:08:41.679+0000 I CONTROL  [initandlisten] modules: none
db_1   | 2018-09-22T10:08:41.679+0000 I CONTROL  [initandlisten] build environment:
db_1   | 2018-09-22T10:08:41.679+0000 I CONTROL  [initandlisten]     distmod: debian81
db_1   | 2018-09-22T10:08:41.680+0000 I CONTROL  [initandlisten]     distarch: x86_64
db_1   | 2018-09-22T10:08:41.680+0000 I CONTROL  [initandlisten]     target_arch: x86_64
db_1   | 2018-09-22T10:08:41.680+0000 I CONTROL  [initandlisten] options: {}
db_1   | 2018-09-22T10:08:41.686+0000 I -        [initandlisten] Detected data files in /data/db created by the 'wiredTiger' storage engine, so setting the active storage engine to 'wiredTiger'.
db_1   | 2018-09-22T10:08:41.687+0000 I STORAGE  [initandlisten] wiredtiger_open config: create,cache_size=8G,session_max=20000,eviction=(threads_min=4,threads_max=4),config_base=false,statistics=(fast),log=(enabled=true,archive=true,path=journal,compressor=snappy),file_manager=(close_idle_time=100000),checkpoint=(wait=60,log_size=2GB),statistics_log=(wait=0),verbose=(recovery_progress),
db_1   | 2018-09-22T10:08:41.905+0000 I STORAGE  [initandlisten] WiredTiger [1537610921:904991][1:0x7fdf57debcc0], txn-recover: Main recovery loop: starting at 89/4096
db_1   | 2018-09-22T10:08:41.952+0000 I STORAGE  [initandlisten] WiredTiger [1537610921:952261][1:0x7fdf57debcc0], txn-recover: Recovering log 89 through 90
db_1   | 2018-09-22T10:08:41.957+0000 I STORAGE  [initandlisten] WiredTiger [1537610921:957000][1:0x7fdf57debcc0], txn-recover: Recovering log 90 through 90
db_1   | 2018-09-22T10:08:42.148+0000 I NETWORK  [HostnameCanonicalizationWorker] Starting hostname canonicalization worker
db_1   | 2018-09-22T10:08:42.148+0000 I FTDC     [initandlisten] Initializing full-time diagnostic data capture with directory '/data/db/diagnostic.data'
db_1   | 2018-09-22T10:08:42.148+0000 I NETWORK  [initandlisten] waiting for connections on port 27017
api_1  |   Usage: nodemon [nodemon options] [script.js] [args]
api_1  | 
api_1  |   See "nodemon --help" for more.
api_1  | 

topology_api_1 exited with code 0

Если я комментирую:

volumes:
-.:/usr/src/app

Он компилируется и работает правильно.

Может кто-нибудь помочь найти то, что в моем подходе?Спасибо

1 Ответ

0 голосов
/ 22 сентября 2018

docker-compose.yml и api dockerFile находятся в разных каталогах instruction инструкция «volume» в файле compose перезаписывает инструкцию «copy» - они имеют разный контекст。

...