gpt4 book ai didi

javascript - 使 Dockerfile VOLUME 表现得像 docker-compose volumes

转载 作者:搜寻专家 更新时间:2023-10-31 23:11:50 26 4
gpt4 key购买 nike

我正在尝试设置 Dockerfile将我的主机目录挂载到我指定的 docker 容器目录(因此代码更改将立即反射(reflect)出来)。当我运行 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"

最佳答案

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

  1. 不能在 Dockerfile 中定义挂载卷
  2. 它仅用于指定容器间的体积

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


-v 选项和 docker-compose 中的 volumes 标签的工作方式相同。主机目录挂载到容器目录。容器目录中图像中存在的任何文件都将被主机目录中的文件替换。

关于javascript - 使 Dockerfile VOLUME 表现得像 docker-compose volumes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37043119/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com