Файлы внутри контейнера Docker не обновляются при редактировании на хосте - PullRequest
0 голосов
/ 11 марта 2019

Я использую Docker, который работает нормально.
Я могу запустить образ Docker, используя docker-compose.

docker-compose rm nodejs; docker-compose rm db; docker-compose up --build

Я прикрепил оболочку к контейнеру Docker, используя

docker exec -it nodejs_nodejs_1 bash

Я могу просматривать файлы внутри контейнера

(inside container)
cat server.js

Теперь, когда я редактирую файл server.js внутри хоста, я бы хотел, чтобы файл внутри контейнера изменился без перезапуска Docker.
Я пытался добавить volumes в файл docker-compose.yml или в файл Dockerfile, но я почему-то не могу заставить его работать.

(Dockerfile, not working)
FROM node:10
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
VOLUMES ["/usr/src/app"]

EXPOSE 8080
CMD [ "npm", "run", "watch" ]

или

(docker-compose.yml, not working)
version: "3.3"
services:
  nodejs:
    build: ./nodejs-server
    ports:
      - "8001:8080"
    links:
      - db:db
    env_file:
      - ./.env-example
    volumes:
      - src: /usr/src/app
  db:
    build: ./mysql-server
    volumes:
      - ./mysql-server/data:/docker-entrypoint-initdb.d #A folder /mysql-server/data with a .sql file needs to exist
    env_file:
      - ./.env-example
volumes:
  src:

Возможно, где-то есть простое руководство, но я еще не нашел его.

1 Ответ

1 голос
/ 11 марта 2019

Если вы хотите, чтобы копия файлов была видна в контейнере, используйте том подключения bind (или том хоста) вместо именованного тома.

Предполагая, что ваш файл docker-compose.yml находится в корневом каталоге того места, которое вы хотите в / usr / src / app, вы можете изменить ваш docker-compose.yml следующим образом:

version: "3.3"
services:
  nodejs:
    build: ./nodejs-server
    ports:
      - "8001:8080"
    links:
      - db:db
    env_file:
      - ./.env-example
    volumes:
      - .:/usr/src/app
  db:
    build: ./mysql-server
    volumes:
      - ./mysql-server/data:/docker-entrypoint-initdb.d #A folder /mysql-server/data with a .sql file needs to exist
    env_file:
      - ./.env-example
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...