在主机中编辑时,Docker容器中的文件未更新

时间:2019-03-11 14:06:25

标签: docker docker-compose dockerfile

我正在使用运行良好的Docker。
我可以使用docker-compose启动Docker映像。

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 个答案:

答案 0 :(得分:1)

如果您希望文件的副本在容器中可见,请使用绑定安装卷(也称为主机卷)而不是命名卷。

假设您的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