使用Docker共享要在Windows 10上运行的项目吗?

时间:2019-02-15 13:35:56

标签: windows docker dockerfile

我是在一家小型网络代理机构工作的初级网络开发人员。我们在Windows 10上使用wampserver,主要在Prestashop,Wordpress和Symfony网站上工作。对于每项任务,我都会获得一张“票”,为此必须在新分支上进行开发(如果需要)。工作完成后,我将分支合并到托管在预生产服务器上的developer分支上,如果认为还可以,则将其合并到master分支上,master分支是托管在另一台服务器上的生产网站。

我的任务是对Docker进行一些研究,并发现它如何改善我们的工作流程。

但是据我了解,docker容器与虚拟机非常相似,仅用于构建隔离的环境以测试应用程序而无需考虑依赖项。

但是考虑到我们已经拥有一个预生产服务器,我看不到使用Docker的意义吗?我错过了什么吗?

此外,Docker是否可用于在团队工作人员之间共享项目(我们都在Windows上工作)? (例如,某个开发人员正在本地网站上工作,他是否可以创建一个容器及其图像,而无需其他开发人员自行配置即可立即使用该容器?)

1 个答案:

答案 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-namecompany/app-name-dev,并且在登台服务器中仅使用company/app-name docker映像来运行代码。

经过数月的互动,您甚至可以信心十足地开始使用company/app-name将应用程序部署到生产中,现在您在开发,登台和生产之间拥有100%的同等地位。

请查看Php Docker Stack以获得一些启发,因为我在完成本职工作时就牢记这一目标,但最终我离开了公司,直到我们在开发过程中采用它时...

但是不要将您需要的所有服务放在一个单一的docker映像中,因为这在docker中是一种不好的做法,而应在每个docker映像中使用一个服务,例如一项服务用于PHP,另一项服务于数据库,另一项服务于Nginx服务器。等等。请参阅here如何将多个服务与docker compose一起组成。