繁体   English   中英

使Dockerfile VOLUME的行为类似于docker-compose卷

[英]Make Dockerfile VOLUME behave like docker-compose volumes

我正在尝试设置Dockerfile以将我的主机目录挂载到指定的Dockerfile容器目录(因此代码更改将立即反映)。 当我运行docker run -p 3000:3000 -d -v ~/Projects/test:/app test ,文件已经挂载,一切正常。 但是,一旦我关闭容器,文件更改不会保留在容器内,就像我从docker-compose文件中运行volumes

这是我的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"

Dockerfile中的VOLUME命令含义略有不同:

  1. 无法在Dockerfile中定义已装入的卷
  2. 它仅用于指定容器间卷

所以在您的Dockerfile中, VOLUME ./:/app/ VOLUME /app/必须更改为VOLUME /app/ 您的docker-compose定义将告诉docker挂载本地目录. 到容器中的/app


-v选项和docker-composevolumes标签以相同的方式工作。 主机目录安装到容器目录。 容器目录中映像中存在的任何文件都将被主机目录中的文件替换。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM