gpt4 book ai didi

php - 带有 vagrant、docker 和 git 的项目布局

转载 作者:IT老高 更新时间:2023-10-28 21:22:44 24 4
gpt4 key购买 nike

所以我最近发现了 docker 和 vagrant,并且我正在开始一个新的 Php 项目,我想在其中使用两者:

Vagrant 是为了拥有一个所有开发人员都可以使用的可互换环境。

Docker 用于生产,但也在 vagrant 机器内部,因此开发环境尽可能地类似于生产环境。

第一种方法是将所有定义文件与源代码一起放在具有此布局的同一存储库中:

/docker
/machine1-web_server
/Dockerfile
/machine2-db_server
/Dockerfile
/machineX
/Dockerfile
/src
/app
/public
/vendors
/vagrant
/Vagrantfile

因此,vagrant 机器在配置时会运行所有 docker“机器”并正确设置数据库和源代码。

这是一个好方法吗?我仍在尝试弄清楚这将如何在部署到生产中发挥作用。

最佳答案

Is this a good approach?

是的,至少几个月以来它对我有用。

不同的是我还有一个docker-compose.yml文件。

在我的 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

other ways从 vagrant 构建和启动 docker 容器,但是使用 docker-compose 允许我将任何 docker 特性从我的 Vagrantfile 外部化。因此,这个 Vagrantfile 可以在不改变的情况下用于其他项目;你只需要提供一个不同的 docker-compose.yml 文件。

我做的另一件不同的事情是将 Vagrantfile 放在项目的根目录中(而不是放在 vagrant 目录中),因为它是人和工具的地方(一些IDE)期望找到它。 PyCharm 有,PhpStorm 可能有。

我还将 docker-compose.yml 文件放在项目的根目录下。

最后,为了进行开发,我只需转到我的项目目录并启动 vagrant,它会告诉 docker-compose(最终随后构建)运行 docker 容器。


I'm still trying to figure out how this will work in terms of deployment to production.

为了部署到生产环境,一种常见的做法是通过将 Docker 镜像发布到 私有(private) docker registry 上,将它们提供给运维团队。 .您可以在自己的基础架构上托管此类注册表,也可以使用提供它们的在线服务,例如 Docker Hub .

同时向运营团队提供 docker-compose.yml文件将定义如何运行容器并链接它们。请注意,此文件不应使用 build:指令,而是依赖 image:操作说明。谁想在部署到生产环境时构建/编译东西?

这个 Docker blog article可以帮助弄清楚如何使用 docker-compose 和 docker-swarm 在集群上进行部署。

关于php - 带有 vagrant、docker 和 git 的项目布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29850964/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com