使用 Docker 开发环境并部署到 AWS Elastic Beanstalk


Development environment with Docker and deploying to AWS Elastic Beanstalk

我正在编写一个PHP应用程序,并希望开发环境成为Docker容器。为此,我在项目的根目录中创建了一个Dockerfile,用于安装应用程序所需的所有包,将配置文件复制到容器,然后安装应用程序。

这工作正常,但现在我需要告诉我的 PHP 应用程序它所处的环境,developmentproduction。这也很容易,我可以将其添加到我的Dockerfile

ENV environment development

现在,当我构建映像时,我的 PHP 应用程序以development模式运行。太好了,现在我可以在 Docker 容器中构建我的应用程序了!

但是,当我想将此应用程序部署到生产服务器(具体而言,是 AWS Elastic Beanstalk)时,会发生什么情况?如果我在Dockerfile中指定环境是development的,那么我的应用程序在部署到 Elastic Beanstalk 时是否不会在开发模式下运行?

设置环境变量是一种很好的方法;但是,通过在 Dockerfile 中执行此操作,您可以为从该映像派生的任何容器设置它。您真正想做的是逐个容器进行设置。执行此操作的方法是在运行容器时设置它:

对于开发:

docker run --env environment=development my-image

对于生产:

docker run --env environment=production my-image

请注意,即使您在 Dockerfile 中设置了环境变量,这也将起作用 - 使用 docker run --env 设置的变量将覆盖 Dockerfile 中设置的值。