跳到主要内容

使用Docker将ActiveJ服务器部署到AWS上

在本教程中,我们将把在 入门教程中创建的HTTP服务器 部署到AWS。 我们将使用Docker来实现这一目的。

1. 组装JAR文件

打开你的 服务器的 pom.xml 文件并插入这个配置。

<build>    <plugins>        <!-- Make this jar executable -->        <plugin>            <groupId>org.apache.maven.plugins</groupId>            <artifactId>maven-shade-plugin</artifactId>            <executions>                <execution>                    <phase>package</phase>                    <goals>                        <goal>shade</goal>                    </goals>                    <configuration>                        <transformers>                            <transformer                                    implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">                                <mainClass>HttpHelloWorldExample</mainClass>                            </transformer>                        </transformers>                        <finalName>HelloWorldExample</finalName>                    </configuration>                </execution>            </executions>        </plugin>    </plugins></build>

接着,输入以下命令: - mvn clear - mvn 包 -DskipTests=true 这些操作将产生一个 HelloWorldExample.jar 档案。 你可以在你项目的 target 文件夹中找到它。 它是分发和运行Java应用程序的典型方式。

2. 将其包装成Docker镜像

如果你的机器上没有安装Docker,你可以按照 这个指南。 Docker是部署任何基于云的应用程序的事实标准。 我们遵循这一标准,并建议你将你的ActiveJ应用程序包裹在Docker镜像中。 下面是一个最小的 Dockerfile 的例子。

FROM openjdk:8-jre-alpine
WORKDIR /appCOPY target/HelloWorldExample.jar ./EXPOSE 8080
ENTRYPOINT java $SYS_PROPS -jar HelloWorldExample.jar
note

这个应用程序使用JDK/JRE 8,内部使用Linux Alpine。

短暂的逻辑描述。

  • 首先,我们应该建立我们的应用程序。 它为JAR文件的创建复制了所有必要的数据,并构建了它。
  • 之后,它将JAR文件移到应用程序根目录,并在端口 8080

你可以使用以下命令来构建它: docker build -t activej-app .,并在docker daemon上运行这个镜像: docker run --rm -p8080:8080 activej-app. 如果你使用 docker-machine,所有操作都将是一样的。

3. 将你的应用程序部署到云端(以AWS为例)。

首先,你应该拥有一个亚马逊AWS EC2账户,并有一个正在运行的EC2实例。

这里有一份关于如何部署你的应用程序(不是Docker镜像)的指南。

  • Download your Amazon key (key_name.pem).
  • 执行 chmod 400 key_name.pem ,授予该文件只读的属性。
  • 通过 ssh: ssh -i key_name.pem user@instance-id 连接到你的EC2实例。
  • 打开新的终端/iTerm标签,尝试通过FTP协议发送你的JAR文件: scp -i key_name.pem your/app/path/HelloWorldServer.jar ubuntu@instance-id:
  • 等待,直到你的文件上传。
  • 在你的ssh标签中运行 java -jar HelloWorld.jar

Voila! 你正在AWS实例上运行你的应用程序。 在你的IP地址上检查一下。

4. 部署Docker容器

这里有一份关于如何部署Docker镜像的指南。

  • 下载你的亚马逊密钥 (key_name.pem) 。
  • 执行 chmod 400 key_name.pem ,授予该文件只读的属性。
  • 将Docker镜像转换为 tar 档案: sudo docker save activej-app >> activej-app.tar
  • 通过 ssh : ssh -i key_name.pem user@instance-id 连接到你的EC2实例。
  • 打开新的终端/iTerm标签,尝试通过FTP协议发送你的JAR文件。

scp -i key_name.pem your/image/path/activej-app.tar ubuntu@instance-id: 等到你的文件上传完毕。 在你的ssh标签中运行这样的命令: - sudo apt-get update -y ,以更新Linux系统的云存储库。 - sudo apt-get install -y docker.io 来安装Docker。 - dockerd ,启动Docker守护程序。 - docker load -i activej-app.tar 来解压存档的镜像。 - docker run -p 8080:8080 activej-app 以在Docker容器中启动你的应用程序。

万岁! 你正在AWS实例上运行带有ActiveJ应用程序的Docker镜像。 在你的IP地址上检查一下。