本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Elastic Beanstalk 上预配置的 Docker GlassFish 容器
注意
2022 年 7 月 18 日,Elastic Beanstalk 将所有基于亚马逊 Linux () 的平台分支的状态设置为停用。AMI AL1有关迁移到当前且完全受支持的 Amazon Linux 2023 平台分支的更多信息,请参阅 将 Elastic Beanstalk Linux 应用程序迁移到 Amazon Linux 2023 或 Amazon Linux 2。
不再支持在亚马逊 Linux AMI (AL1) 上运行的预配置 Docker GlassFish 平台分支。要将您的 GlassFish 应用程序迁移到支持的亚马逊 Linux 2023 平台,请将您的应用程序代码部署 GlassFish 到亚马逊 Linux 2023 Docker 镜像。有关更多信息,请参阅以下主题:将 GlassFish 应用程序部署到 Docker 平台:2023 年亚马逊 Linux 的迁移之路。
本部分介绍如何在本地开发示例应用程序,然后使用预配置的 Docker 容器将应用程序部署到 Elastic Beanstalk。
设置本地开发环境
在本演练中,我们使用了一个 GlassFish 示例应用程序。
设置环境
-
为示例应用程序创建新文件夹。
~$
mkdir eb-preconf-example
~$cd eb-preconf-example
-
将示例应用程序代码下载到新文件夹。
~$
wget https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/samples/docker-glassfish-v1.zip
~$unzip docker-glassfish-v1.zip
~$rm docker-glassfish-v1.zip
在本地开发和测试
开发示例 GlassFish 应用程序
-
将
Dockerfile
添加到应用程序的根目录文件夹。在文件中,指定用于运行本地预配置的 AWS Elastic Beanstalk Docker 容器的 Docker 基础镜像。稍后你将把你的应用程序部署到 Elastic Beanstal GlassFish k 预配置的 Docker 平台版本。选择此平台版本使用的 Docker 基本映像。要了解此平台版本的当前 Docker 镜像的更多信息,请参阅 AWS Elastic Beanstalk 平台指南中的 AWS Elastic Beanstalk 支持的平台页面的预配置 Docker 部分。例 ~/E/b-preconf-exampleDockerfile
# For Glassfish 5.0 Java 8 FROM amazon/aws-eb-glassfish:5.0-al-onbuild-2.11.1
有关使用
Dockerfile
的更多信息,请参阅准备你的 Docker 镜像以部署到 Elastic Beanstalk。 -
构建 Docker 映像。
~/eb-preconf-example$
docker build -t my-app-image .
-
从该映像运行 Docker 容器。
注意
必须包含
-p
标记才能将容器中的端口 8080 映射到 localhost 端口 3000。Elastic Beanstalk Docker 容器始终在容器上的端口 8080 上公开应用程序。-it
标志将映像作为交互式进程运行。当容器存在时,--rm
标志将清理容器文件系统。您可以选择包含-d
标志以将映像作为守护程序运行。$
docker run -it --rm -p 3000:8080 my-app-image
-
要查看示例应用程序,请在 Web 浏览器中键URL入以下内容。
http://localhost:3000
部署到 Elastic Beanstalk
在测试应用程序后,可随时将其部署到 Elastic Beanstalk。
将应用程序部署到 Elastic Beanstalk
-
在应用程序的根文件夹中,将
Dockerfile
重命名为Dockerfile.local
。Elastic Beanstalk 需要执行此步骤,才能Dockerfile
使用包含正确说明的 Elastic Beanstalk 在 Elastic Beanstalk 环境中的每个亚马逊实例上构建自定义 Docker 镜像。EC2注意
如果您的
Dockerfile
包含修改平台版本的基础 Docker 映像的指令,则无需执行此步骤。如果您的Dockerfile
仅包含用来指定从中构建容器的基本映像的Dockerfile
行,则完全无需使用FROM
。在这种情况下,Dockerfile
是冗余的。 -
创建应用程序源包。
~/eb-preconf-example$
zip myapp.zip -r *
-
对于 Platform (平台),在 Preconfigured – Docker (预配置 – Docker) 下,选择 Glassfish。
-
对于 Application code (应用程序节点),选择 Upload your code (上传您的节点),然后选择 Upload (上传)。
-
选择 Local file (本地文件),再选择 Browse (浏览),然后打开您刚刚创建的应用程序源包。
-
选择上传。
-
选择复查并启动。
-
查看可用设置并选择 Create app (创建应用程序)。
-
创建环境后,您可以查看已部署的应用程序。选择显示URL在控制台仪表板顶部的环境。
将 GlassFish 应用程序部署到 Docker 平台:2023 年亚马逊 Linux 的迁移之路
本教程的目标是为使用预配置的 Docker GlassFish 平台(基于亚马逊 LinuxAMI)的客户提供向亚马逊 Linux 2023 的迁移路径。您可以通过部署 GlassFish 将 GlassFish 应用程序迁移到亚马逊 Linux 2023,将应用程序代码迁移到亚马逊 Linux 2023 Docker 镜像。
本教程将引导你使用 AWS Elastic Beanstalk Docker 平台将基于 Java EE 应用服务器的应用程序部署到 E GlassFish
我们演示两种构建 Docker 映像的方法:
-
简单 — 提供您的 GlassFish 应用程序源代码,让 Elastic Beanstalk 在配置环境的过程中构建和运行 Docker 映像。这很容易设置,但代价是增加实例预置时间。
-
高级 – 构建包含应用程序代码和依赖关系的自定义 Docker 映像,并将其提供给 Elastic Beanstalk 以在您的环境中使用。这种方法的参与度稍高一些,并减少了环境中实例的预置时间。
先决条件
本教程假设你对 Elastic Beanstalk 的基本操作、Elastic Beanstalk 命令行接口 (EB) 和 Docker 有所了解。CLI如果尚不了解,请按照Elastic Beanstalk 入门中的说明操作以启动您的第一个 Elastic Beanstalk 环境。本教程使用 EB CLI,但您也可以使用 Elastic Beanstalk 控制台创建环境和上传应用程序。
要完成本教程,您需要做以下 Docker 组件:
要了解有关在 Elastic Beanstalk 平台上配置 Docker 环境的更多信息,请参阅同一章中的准备你的 Docker 镜像以部署到 Elastic Beanstalk。
简单示例:提供您的应用程序代码
这是部署 GlassFish 应用程序的简便方法。提供您的应用程序源代码以及本教程中包含的 Dockerfile
。Elastic Beanstalk 会生成一个 Docker 镜像,其中包含你的应用程序和软件堆栈。 GlassFish 然后,Elastic Beanstalk 在环境实例上运行该映像。
此方法的一个问题是,无论 Elastic Beanstalk 何时为您的环境创建实例,都会在本地构建 Docker 映像。映像构建会增加实例预置时间。这种影响不限于初始环境创建,也会在扩展操作期间发生。
使用示例 GlassFish 应用程序启动环境
-
下载示例
docker-glassfish-al2-v1.zip
,然后将.zip
文件展开到开发环境的目录中。~$
curl https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/samples/docker-glassfish-al2-v1.zip --output docker-glassfish-al2-v1.zip
~$mkdir glassfish-example
~$cd glassfish-example
~/glassfish-example$unzip ../docker-glassfish-al2-v1.zip
您的目录结构应如下所示。
~/glassfish-example |-- Dockerfile |-- Dockerrun.aws.json |-- glassfish-start.sh |-- index.jsp |-- META-INF | |-- LICENSE.txt | |-- MANIFEST.MF | `-- NOTICE.txt |-- robots.txt `-- WEB-INF `-- web.xml
以下文件是在环境中构建和运行 Docker 容器的关键:
-
Dockerfile
– 提供 Docker 用于构建具有应用程序和所需依赖关系的映像的说明。 -
glassfish-start.sh
– Docker 映像运行以启动应用程序的 Shell 脚本。 -
Dockerrun.aws.json
— 提供日志密钥,以包括 GlassFish 应用程序服务器登录日志文件请求。如果您对 GlassFish 日志不感兴趣,可以省略此文件。
-
-
为到 Elastic Beanstalk 的部署配置本地目录。
~/glassfish-example$
eb init -p docker
glassfish-example
-
(可选)使用 eb local run 命令在本地生成并运行您的容器。
~/glassfish-example$
eb local run --port 8080
-
(可选)当您的容器正在运行时,可使用 eb local open 命令在 Web 浏览器中查看您的应用程序。或者,在 Web 浏览器中打开 http://localhost:8080/
。 ~/glassfish-example$
eb local open
-
使用 eb create 命令创建环境并部署应用程序。
~/glassfish-example$
eb create
glassfish-example-env
-
启动环境后,使用 eb open 命令在 Web 浏览器中查看它。
~/glassfish-example$
eb open
完成使用该示例后,终止环境并删除相关资源。
~/glassfish-example$
eb terminate --all
高级示例:提供预构建的 Docker 映像
这是一种更高级的 GlassFish 应用程序部署方式。在第一个示例的基础上,您创建了一个包含应用程序代码和 GlassFish 软件堆栈的 Docker 镜像,然后将其推送到 Docker Hub。完成此一次性步骤后,您可以根据自定义映像启动 Elastic Beanstalk 环境。
当您启动环境并提供 Docker 映像时,环境中的实例会直接下载并使用此映像,而不需要构建 Docker 映像。因此,实例预置时间会减少。
注意
以下步骤将创建一个公开可用的 Docker 映像。
您将使用本地安装的 Docker 中的 Docker 命令以及 Docker Hub 凭据。有关更多信息,请参阅本主题前面的 “先决条件” 部分。
使用预构建的 GlassFish 应用程序 Docker 镜像启动环境
-
下载并展开示例
docker-glassfish-al2-v1.zip
,如前面的简单示例所示。如果您已完成该示例,则可以使用已有的目录。 -
构建一个 Docker 映像并将其推送到 Docker Hub。输入你的 Docker ID
docker-id
登录 Docker Hub。~/glassfish-example$
docker build -t
~/glassfish-example$docker-id
/beanstalk-glassfish-example:latest .docker push
docker-id
/beanstalk-glassfish-example:latest注意
在推送映像之前,您可能需要运行 docker login。如果您运行不带参数的命令,系统将提示您输入 Docker Hub 凭据。
-
创建其他目录。
~$
mkdir glassfish-prebuilt
~$cd glassfish-prebuilt
-
将以下示例复制到名为
Dockerrun.aws.json
的文件中。例
~/glassfish-prebuilt/Dockerrun.aws.json
{ "AWSEBDockerrunVersion": "1", "Image": { "Name": "
docker-username
/beanstalk-glassfish-example" }, "Ports": [ { "ContainerPort": 8080, "HostPort": 8080 } ], "Logging": "/usr/local/glassfish5/glassfish/domains/domain1/logs" } -
为到 Elastic Beanstalk 的部署配置本地目录。
~/glassfish-prebuilt$
eb init -p docker
glassfish-prebuilt$
-
(可选)使用 eb local run 命令在本地运行容器。
~/glassfish-prebuilt$
eb local run --port 8080
-
(可选)当您的容器正在运行时,可使用 eb local open 命令在 Web 浏览器中查看您的应用程序。或者,在 Web 浏览器中打开 http://localhost:8080/
。 ~/glassfish-prebuilt$
eb local open
-
使用 eb create 命令创建环境并部署 Docker 映像。
~/glassfish-prebuilt$
eb create
glassfish-prebuilt-env
-
启动环境后,使用 eb open 命令在 Web 浏览器中查看它。
~/glassfish-prebuilt$
eb open
完成使用该示例后,终止环境并删除相关资源。
~/glassfish-prebuilt$
eb terminate --all