AWS Elastic Beanstalk
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

示例:使用 Dockerfile 来自定义和配置预配置 Docker 平台

利用预配置 Docker 平台,您无法使用配置文件来自定义和配置您的应用程序所依赖的软件。相反,如果要将预配置 Docker 平台自定义为安装应用程序所需的额外软件包,您可以将 Dockerfile 添加到应用程序的根目录文件夹。

可以在 Dockerfile 中包含以下指令:

  • FROM – (必需,是文件中的第一条指令) 指定从其构建 Docker 容器的基本映像,Elastic Beanstalk 也会针对它运行后续 Dockerfile 指令。

    映像可托管于公有存储库中、第三方注册表托管的私有存储库中或您在 EC2 上运行的存储库中。

  • EXPOSE – (必需) 列出要在 Docker 容器上公开的端口。Elastic Beanstalk 使用此端口值将 Docker 容器连接到主机上运行的反向代理。

    您可以指定多个容器端口,但 Elastic Beanstalk 只使用第一个端口将您的容器连接到主机的反向代理并路由来自公有 Internet 的请求。

  • CMD – 指定一个可执行文件和几个默认参数,它们组合成容器在启动时运行的命令。使用以下格式:

    CMD ["executable","param1","param2"]

    CMD 还可用于通过忽略可执行的实参为 ENTRYPOINT 命令提供默认形参。可执行文件必须在 CMDENTRYPOINT 中指定,但不能在两者中同时指定。对于基本情景,请使用 CMD 并忽略 ENTRYPOINT

  • ENTRYPOINT – 使用与 CMD 相同的 JSON 格式,并且与 CMD 一样,指定要在容器启动时运行的命令。还允许容器作为可执行文件与 docker run 一起运行。

    如果您定义了 ENTRYPOINT,则也可以使用 CMD 来指定默认参数,该参数可用 docker run-d 选项覆盖。当容器运行时,由 ENTRYPOINT (包含任何参数) 定义的命令将与 CMDdocker run 中的参数合并。

  • RUN – 指定一个或多个用于安装包和在映像中配置 Web 应用程序的命令。

    如果 Dockerfile 中包含 RUN 指令,请将该文件和 Dockerfile 中的 RUN 指令使用的上下文压缩为一个 .zip 文件。请在目录的最顶层压缩文件。

有关您可以包含在 Dockerfile 中的指令的更多信息,请参阅 Docker 网站上的 Dockerfile Reference

以下代码段是一个 Dockerfile 示例。Dockerfile 中的指令通过添加 PostgreSQL 依赖项来自定义 Python 3.4 平台,并且公开端口 8080。

注意

适用于 Glassfish 和 Python 的 Elastic Beanstalk 预配置 Docker 平台需要您公开端口 8080。适用于 Go 的 Elastic Beanstalk 预配置 Docker 平台需要您公开端口 3000。

# Use the AWS Elastic Beanstalk Python 3.4 image FROM amazon/aws-eb-python:3.4.2-onbuild-3.5.1 # Exposes port 8080 EXPOSE 8080 # Install PostgreSQL dependencies RUN apt-get update && \ apt-get install -y postgresql libpq-dev && \ rm -rf /var/lib/apt/lists/*

如果要使用额外的 AWS 资源 (如 Amazon DynamoDB 或 Amazon Simple Notification Service),请修改代理服务器或修改 Elastic Beanstalk 环境的操作系统配置。有关使用配置文件的更多信息,请参阅AWS Elastic Beanstalk 环境配置