![](/img/trans.png)
[英]Node modules not found with Dockerfile and docker-compose due to bind mount
[英]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
命令含义略有不同:
所以在您的Dockerfile中, VOLUME ./:/app/
VOLUME /app/
必须更改为VOLUME /app/
。 您的docker-compose
定义将告诉docker挂载本地目录.
到容器中的/app
。
-v
选项和docker-compose
的volumes
标签以相同的方式工作。 主机目录安装到容器目录。 容器目录中映像中存在的任何文件都将被主机目录中的文件替换。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.