Развертывание 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-адресе.