Перейти к основному содержанию

Развертывание ActiveJ Server в AWS с помощью Docker

В этом руководстве мы развернем 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 clean - mvn package -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: docker run --rm -p8080:8080 activej-app. Все действия будут такими же, если вы используете docker-machine.

3. Развертывание приложения в облаке (на примере AWS)

Прежде всего, вы должны владеть учетной записью Amazon AWS EC2 и иметь работающий экземпляр EC2.

Вот руководство по развертыванию приложения (не образа Docker):

  • Загрузите свой ключ Amazon (key_name.pem).
  • Выполните chmod 400 key_name.pem для присвоения этому файлу свойства "только для чтения".
  • Подключитесь к экземпляру EC2 через ssh: ssh -i key_name.pem user@instance-id
  • Откройте новую вкладку Terminal/iTerm и попробуйте отправить ваш JAR-файл по протоколу FTP: scp -i key_name.pem your/app/path/HelloWorldServer.jar ubuntu@instance-id:
  • Подождите, пока ваш файл загрузится.
  • Запустите java -jar HelloWorld.jar на вашей вкладке ssh.

Вуаля! Вы запускаете свое приложение на экземпляре AWS. Проверьте его на своем IP-адресе.

4. Развертывание контейнера Docker

Вот руководство по развертыванию образа Docker:

  • Загрузите свой ключ Amazon (key_name.pem).
  • Выполните chmod 400 key_name.pem для присвоения этому файлу свойства "только для чтения".
  • Трансформируйте образ Docker в архив tar : sudo docker save activej-app >> activej-app.tar
  • Подключитесь к экземпляру EC2 через ssh : ssh -i key_name.pem user@instance-id
  • Откройте новую вкладку Terminal/iTerm и попробуйте отправить ваш JAR-файл по протоколу FTP:

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.

Ура! Вы запускаете свой образ Docker с приложением ActiveJ на экземпляре AWS. Проверьте его на своем IP-адресе.