我是在一家小型网络代理机构工作的初级网络开发人员。我们在Windows 10上使用wampserver,主要在Prestashop,Wordpress和Symfony网站上工作。对于每项任务,我都会获得一张“票”,为此必须在新分支上进行开发(如果需要)。工作完成后,我将分支合并到托管在预生产服务器上的developer分支上,如果认为还可以,则将其合并到master分支上,master分支是托管在另一台服务器上的生产网站。>
我的任务是对Docker进行一些研究,并发现它如何改善我们的工作流程。
但是据我了解,docker容器与虚拟机非常相似,仅用于构建隔离的环境以测试应用程序而无需考虑依赖项。
但是考虑到我们已经拥有一个预生产服务器,我看不到使用Docker的意义吗?我错过了什么吗?
此外,Docker是否可用于在团队工作人员之间共享项目(我们都在Windows上工作)? (例如,某个开发人员正在本地网站上工作,他是否可以创建一个容器及其图像,而无需其他开发人员自行配置即可立即使用该容器?)
答案 0 :(得分:0)
但是据我了解,docker容器与虚拟机非常相似,仅用于构建隔离的环境以测试应用程序而无需考虑依赖项。
不,Docker容器不仅对测试有用。
使用Docker构建正确的工作流程时,如果所有人都使用相同的Docker映像,则可以在开发,登台和生产之间实现100%的均等。
但是考虑到我们已经拥有一个预生产服务器,我看不到使用Docker的意义吗?我错过了什么吗?
此预生产服务器(也称为staging
服务器)也应使用docker运行代码。
此外,Docker是否可用于在团队工作人员之间共享项目(我们都在Windows上工作)? (例如,某个开发人员正在本地网站上工作,他是否可以创建一个容器及其图像,而无需其他开发人员自行配置即可立即使用该容器?)
是的...您仅使用在生产中运行所需的东西来创建基本docker映像,然后可以使用必要的开发人员工具从中构建其他docker映像。
生产图片company/app-name
:
FROM php:alpine
# other your production dependencies here
假设有人先构建名称为company/app-name
的docker镜像,然后再进行开发。
开发图片company/app-name-dev
:
FROM company/app-name
# add here only developer tools
现在,开发人员在开发过程中同时使用映像company/app-name
和company/app-name-dev
,并且在登台服务器中仅使用company/app-name
docker映像来运行代码。
经过数月的互动,您甚至可以信心十足地开始使用company/app-name
将应用程序部署到生产中,现在您在开发,登台和生产之间拥有100%
的同等地位。
请查看Php Docker Stack以获得一些启发,因为我在完成本职工作时就牢记这一目标,但最终我离开了公司,直到我们在开发过程中采用它时...
但是不要将您需要的所有服务放在一个单一的docker映像中,因为这在docker中是一种不好的做法,而应在每个docker映像中使用一个服务,例如一项服务用于PHP,另一项服务于数据库,另一项服务于Nginx服务器。等等。请参阅here如何将多个服务与docker compose一起组成。