项目布局与stream浪者,docker和混帐
所以我最近发现了docker和vagrant,我开始了一个新的Php项目,在这个项目中我要使用两个:
stream浪为了有一个可交换的环境,所有的开发人员可以使用。
docker为生产,而且在stream浪机内部,因此开发环境与生产环境尽可能接近。
第一种方法是将所有定义文件与源代码放在同一个存储库中,并使用此布局:
/docker /machine1-web_server /Dockerfile /machine2-db_server /Dockerfile /machineX /Dockerfile /src /app /public /vendors /vagrant /Vagrantfile
因此,在规定的情况下,stream浪者机器运行所有docker“机器”,并正确设置数据库和源代码。
这是一个好方法吗? 我仍然试图弄清楚这将如何在部署到生产的工作。
这是一个好方法吗?
是的,至less在几个月以后它对我有用。
不同的是,我也有一个docker-compose.yml
文件。
在我的Vagrantfile
有第一个供应部分安装了Vagrantfile
,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的供应部分组成:
config.vm.provision "shell", inline: <<-SCRIPT cd /vagrant docker-compose up -d SCRIPT
还有其他的方式来build立和从stream浪者启动docker集装箱,但是使用docker构成允许我从我的stream浪文件中外化任何docker专用性。 因此,这个Vagrantfile可以在没有改变的情况下重用于其他项目。 你只需要提供一个不同docker-compose.yml
文件。
另一件事我做不同的是把Vagrantfile
放在你的项目的根目录(而不是在vagrant
目录),因为它是人类和工具(一些IDE)期望find它的地方。 PyCharm呢,PhpStorm可能呢。
我也把我docker-compose.yml
文件放在我的项目的根目录下。
最后,为了开发我只是去我的项目目录,并启动stream浪汉告诉docker组成(最终build立,然后)运行docker集装箱。
我仍然试图弄清楚这将如何在部署到生产的工作。
对于部署到生产环境,通常的做法是通过将它们发布到私人 docker注册中心,将docker图像提供给操作团队。 您可以在您自己的基础架构上托pipe这样的registry,也可以使用提供它们的在线服务,例如Docker Hub 。
还要向操作团队提供一个docker-compose.yml
文件,该文件将定义如何运行容器并将其链接起来。 请注意,这个文件不应该使用build:
指令,而应该使用image:
指令。 谁希望在部署到生产时构build/编译内容?
这篇Docker博客文章可以帮助您弄清楚如何使用docker-compose和docker-swarm在集群上进行部署。
我也推荐使用docker进行开发,以获得完整的依赖关系的复制。 Docker Compose是关键工具。
你可以使用这样的策略:
泊坞窗,compose.yml
db: image: my_database_image ports: ... machinex: image: my_machine_x_image web: build: . volumes: - '/path/to/my/php/code:/var/www'
在您的Dockerfile中,您可以指定运行您的PHP代码的依赖关系。
此外,我build议保持my_database_image
和my_machine_x_image
项目与他们的Dockerfiles
分开,因为完美可以用于其他项目。
如果您使用的是Mac,则您已经在使用名为boot2docker的VM
我希望这有帮助。