Docker 的开发环境并部署到 AWS Elastic Beanstalk
Development environment with Docker and deploying to AWS Elastic Beanstalk
我正在编写一个 PHP 应用程序并希望开发环境成为一个 Docker 容器。为此,我在我的项目的根目录中创建了一个 Dockerfile
,用于安装我的应用程序所需的所有包,将配置文件复制到容器中,然后安装我的应用程序。
这工作正常,但现在我需要告诉我的 PHP 应用程序它所处的环境,development
或 production
。这也很简单,我可以将其添加到我的 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 中设置的值。
我正在编写一个 PHP 应用程序并希望开发环境成为一个 Docker 容器。为此,我在我的项目的根目录中创建了一个 Dockerfile
,用于安装我的应用程序所需的所有包,将配置文件复制到容器中,然后安装我的应用程序。
这工作正常,但现在我需要告诉我的 PHP 应用程序它所处的环境,development
或 production
。这也很简单,我可以将其添加到我的 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 中设置的值。