到目前为止,我已经使用本地LAMP堆栈来开发我的Web项目并将它们手动部署到服务器。对于下一个项目,我想使用docker和docker-compose来创建mariaDB,NGINX和项目容器,以便于开发和部署。
开发时我希望主机上的代码目录与docker容器同步。我知道可以通过运行
来实现docker run -dt --name containerName -v /path/on/host:/path/in/container
在cli中如here所述,但我想在docker-compose v2文件中执行此操作。
我有一个像这样的docker-composer.yml文件:
version: '2'
services:
db:
#[...]
myProj:
build: ./myProj
image: myProj
depends_on:
- db
volumes:
myCodeVolume:/var/www
volumes:
myCodeVolume:
如何将容器中的/ var / www目录与我的主机(Ubuntu桌面,Mac或Windows机器)同步?
感谢您的帮助。
答案 0 :(得分:4)
这几乎是一样的,你直接在你的撰写文件中的host:container
键下进行services.myProj.volumes
映射:
version: '2'
services:
...
myProj:
...
volumes:
/path/to/file/on/host:/var/www
注意,删除了顶级volumes
密钥。
此文件可以翻译成:
docker create --links db -v /path/to/file/on/host:/var/www myProj
当docker-compose
找到顶级volumes
部分时,它会在创建任何其他容器之前首先尝试docker volume create
其下的键。然后可以使用这些卷来保存您希望跨容器持久化的数据。
所以,如果我把你的文件作为一个例子,它会转化成这样的东西:
docker volume create myCodeVolume
docker create --links db -v myCodeVoume:/var/www myProj