我正在使用运行良好的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:
某处可能有一个简单的指南,但是我还没有找到它。
答案 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