如何使用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