这是一个好方法吗?
是的,至少几个月以来它对我有用。
不同的是我还有一个docker-compose.yml https://docs.docker.com/compose/ file.
In my Vagrantfile
第一个配置部分安装 docker、pip 和 docker-compose:
config.vm.provision "shell", inline: <<-SCRIPT
if ! type docker >/dev/null; then
echo -e "\n\n========= installing docker..."
curl -sL https://get.docker.io/ | sh
echo -e "\n\n========= installing docker bash completion..."
curl -sL https://raw.githubusercontent.com/dotcloud/docker/master/contrib/completion/bash/docker > /etc/bash_completion.d/docker
adduser vagrant docker
fi
if ! type pip >/dev/null; then
echo -e "\n\n========= installing pip..."
curl -sk https://bootstrap.pypa.io/get-pip.py | python
fi
if ! type docker-compose >/dev/null; then
echo -e "\n\n========= installing docker-compose..."
pip install -U docker-compose
echo -e "\n\n========= installing docker-compose command completion..."
curl -sL https://raw.githubusercontent.com/docker/compose/$(docker-compose --version | awk 'NR==1{print $NF}')/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose
fi
SCRIPT
最后是触发 docker-compose 的配置部分:
config.vm.provision "shell", inline: <<-SCRIPT
cd /vagrant
docker-compose up -d
SCRIPT
有其他方法 http://docs.vagrantup.com/v2/provisioning/docker.html从 vagrant 构建和启动 docker 容器,但使用 docker-compose 允许我从 Vagrantfile 中外部化任何 docker 特性。因此,这个 Vagrantfile 可以在其他项目中重用而无需更改;你只需要提供一个不同的docker-compose.yml
file.
我做的另一件事不同的是把Vagrantfile
在你的项目的根目录下(而不是在vagrant
目录),因为这是人类和工具(某些 IDE)期望找到它的地方。 PyCharm 可以,PhpStorm 可能也可以。
我也把我的docker-compose.yml
文件位于我的项目的根目录下。
最后,为了进行开发,我只需转到我的项目目录并启动 vagrant,它告诉 docker-compose(然后最终构建)运行 docker 容器。
我仍在尝试弄清楚这在部署到生产方面将如何工作。
为了部署到生产环境,常见的做法是通过将 Docker 镜像发布到private 码头工人注册表 https://github.com/docker/docker-registry。您可以在自己的基础设施上托管此类注册表,也可以使用提供此类注册表的在线服务,例如码头工人中心 https://hub.docker.com/.
还为运营团队提供docker-compose.yml https://docs.docker.com/compose/文件将定义如何运行容器并链接它们。请注意,该文件不应使用build: https://docs.docker.com/compose/yml/#build指令,而是依赖于image: https://docs.docker.com/compose/yml/#image操作说明。谁想在部署到生产时构建/编译东西?
This Docker 博客文章 https://blog.docker.com/2015/02/orchestrating-docker-with-machine-swarm-and-compose/可以帮助弄清楚如何使用 docker-compose 和 docker-swarm 在集群上进行部署。