如何使用docker-compose在容器和主机之间同步代码?
到现在为止,我已经使用本地LAMP堆栈来开发我的Web项目并将其手动部署到服务器。 对于下一个项目,我想使用docker和docker-compose来创build一个mariaDB,NGINX和一个项目容器,以便于开发和部署。
在开发时,我希望主机上的代码目录与docker容器同步。 我知道可以通过运行来实现
docker run -dt --name containerName -v /path/on/host:/path/in/container
在这里所说的cli,但我想在一个docker-compose v2文件中这样做。
我只是有一个docker-composer.yml文件看起来像这样:
version: '2' services: db: #[...] myProj: build: ./myProj image: myProj depends_on: - db volumes: myCodeVolume:/var/www volumes: myCodeVolume:
我怎样才能在我的主机(Ubuntu桌面,马科斯或Windows机器)在容器中同步我的/ var / www目录?
感谢您的帮助。
这几乎是一样的,你直接在你的撰写文件中的services.myProj.volumes
键下执行host:container
映射:
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
部分时,它会尝试创build其他容器,然后在其下面docker volume create
其下的键。 然后可以使用这些卷来保存要在容器间保持持久性的数据。 所以,如果我拿你的文件作为例子,它会翻译成这样的东西:
docker volume create myCodeVolume docker create --links db -v myCodeVoume:/var/www myProj