我正在尝试设置Dockerfile
以将我的主机目录挂载到指定的docker容器目录(因此代码更改将立即反映出来)。当我运行docker run -p 3000:3000 -d -v ~/Projects/test:/app test
时,文件已挂载,一切正常。但是,一旦我关闭容器,文件更改就不会保留在容器中,就像我从volumes
文件中运行docker-compose
时所做的更改一样。
这是我的Dockerfile:
FROM node:onbuild
EXPOSE 3000
RUN mkdir /app
VOLUME ./:/app/
WORKDIR /app/
RUN npm install -g nodemon
CMD nodemon server.js
这是一个有效的docker-compose.yml:
test:
build: ./
volumes:
- ./:/app/
working_dir: /app/
command: npm start
ports:
- "3000:3000"
答案 0 :(得分:4)
Dockerfile中的VOLUME
命令含义略有不同:
因此,在您的Dockerfile中,VOLUME ./:/app/
必须更改为VOLUME /app/
。您的docker-compose
定义会告诉docker将容器中的本地目录.
挂载到/app
。
-v
选项和volumes
中的docker-compose
标记的工作方式相同。主机目录安装到容器目录。容器目录中映像中存在的任何文件都将被主机目录中的文件替换。