Javascript 使Dockerfile卷的行为类似于docker compose卷
我正在尝试设置一个Javascript 使Dockerfile卷的行为类似于docker compose卷,javascript,node.js,docker,docker-compose,dockerfile,Javascript,Node.js,Docker,Docker Compose,Dockerfile,我正在尝试设置一个Dockerfile以将我的主机目录装载到指定的docker容器目录(因此代码更改将立即反映出来)。当我运行docker run-p3000:3000-d-v~/Projects/test:/app test时,文件被挂载,一切正常。但是,一旦关闭容器,文件更改就不会像从docker compose文件运行volumes时所做的更改一样留在容器中 这是我的Dockerfile: FROM node:onbuild EXPOSE 3000 RUN mkdir /app VOLUM
Dockerfile
以将我的主机目录装载到指定的docker容器目录(因此代码更改将立即反映出来)。当我运行docker run-p3000: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
命令的含义稍有不同:
VOLUME./:/app/
必须更改为VOLUME/app/
。您的docker compose
定义将告诉docker将本地目录
装载到容器中的/app
-v
选项和docker compose
中的volumes
标记的工作方式相同。主机目录已装入容器目录。容器目录中映像中存在的任何文件都将替换为主机目录中的文件