如何使用 docker-compose 在容器和主机之间同步代码?
How to sync code between container and host using docker-compose?
到目前为止,我一直使用本地 LAMP 堆栈来开发我的 Web 项目并将它们手动部署到服务器。对于下一个项目,我想使用 docker 和 docker-compose 创建一个 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:
如何将容器中的 /var/www 目录与主机(Ubuntu 桌面、macos 或 Windows 机器)同步?
感谢您的帮助。
这几乎是一样的,你直接在你的 compose 文件的 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
部分时,它会先尝试 docker volume create
它下面的键,然后再创建任何其他容器。然后可以使用这些卷来保存您希望跨容器持久保存的数据。
所以,如果我以你的文件为例,它会翻译成这样:
docker volume create myCodeVolume
docker create --links db -v myCodeVoume:/var/www myProj
到目前为止,我一直使用本地 LAMP 堆栈来开发我的 Web 项目并将它们手动部署到服务器。对于下一个项目,我想使用 docker 和 docker-compose 创建一个 mariaDB、NGINX 和一个项目容器,以便于开发和部署。
开发时,我希望主机上的代码目录与 docker 容器同步。我知道可以通过 运行
来实现docker run -dt --name containerName -v /path/on/host:/path/in/container
在 cli 中如所述
我的 docker-composer.yml 文件看起来像这样:
version: '2'
services:
db:
#[...]
myProj:
build: ./myProj
image: myProj
depends_on:
- db
volumes:
myCodeVolume:/var/www
volumes:
myCodeVolume:
如何将容器中的 /var/www 目录与主机(Ubuntu 桌面、macos 或 Windows 机器)同步?
感谢您的帮助。
这几乎是一样的,你直接在你的 compose 文件的 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
部分时,它会先尝试 docker volume create
它下面的键,然后再创建任何其他容器。然后可以使用这些卷来保存您希望跨容器持久保存的数据。
所以,如果我以你的文件为例,它会翻译成这样:
docker volume create myCodeVolume
docker create --links db -v myCodeVoume:/var/www myProj