Если вы хотите запустить .jar
файл напрямую, выполните следующие шаги:
1. scp app.jar <IP>:.
2. cp /home/ubuntu/app.jar /opt/tomcat/webapps/
3. cd /opt/tomcat/bin/ // Assuming tomcat is properly installed with users configured.
4. ./catalina.sh start // Start the tomcat
Вышеуказанная настройка должна быть достаточной для развертывания приложения. Если вы будете отслеживать журналы запуска tomcat, вы получите зарегистрированный URL, для которого было зарегистрировано приложение.
Развертывание tomcat в порядке, но есть и лучший способ: использование докера работает как положено.)
Следующее решение включает в себя следующие шаги:
1. Install docker on the server.
2. SpringBoot application configuration for containerization on the host machine.
3. GCP configuration on the host machine for pushing the built image to private container repository.
4. Configuration of the server for GCP for pulling the image from private container repository and finally starting the application.
Во-первых:
Установите докер на сервер по этой ссылке
Второе: настройка / настройка приложения с загрузочной пружиной для развертывания докера.
- Установите плагин spotify docker для maven, чтобы образ докера создавался во время процесса сборки maven, и мы также добавим необходимую конфигурацию докера для maven здесь.
а. Вверху вашего pom.xml
, после тега <parent>
, добавьте следующую мета-информацию о вашем проекте
<groupId>com.companyName</groupId>
<artifactId>projectArtifact</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>Project Name</name>
б. В разделе <build><plugins>
добавьте следующий код:
<plugin>
<groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
<version>1.4.9</version>
<executions>
<execution>
<id>default</id>
<goals>
<goal>build</goal>
<!-- <goal>push</goal> -->
</goals>
</execution>
</executions>
<configuration>
<repository>companyName/${project.artifactId}</repository>
<tag>${project.version}</tag>
<noCache>true</noCache>
<buildArgs>
<JAR_FILE>target/${project.artifactId}-${project.version}.jar</JAR_FILE>
</buildArgs>
</configuration>
</plugin>
На предыдущем шаге мы добавили подключаемый модуль docker в процесс сборки maven, а также добавили мета-информацию о проекте, так что .jar
создается с указанным именем и версией.
В корне проекта создайте Dockerfile
и добавьте следующее содержимое:
# Use java 8 on bare linux as our base image
FROM openjdk:8-jdk-alpine
# Accepting argument from mvn plugin
ARG JAR_FILE
# Set ENV mode
#ENV STAGE=default
ENV DOCKER=true
# Renaming Jar File
COPY ${JAR_FILE} app.jar
# Starting the application
CMD ["java", "-jar", "/app.jar"]
# For actual prod applications, profiles wrt application.properties are used, but for college project, its ok*(Ignoring for first time configuration)
# CMD ["java", "-Dspring.profiles.active=${STAGE}", "-Dserver.port=6262", "-jar", "/app.jar"]
# Assuming the application port to be 6262. Replace with the appropriate port.
EXPOSE 6262
Теперь требуемая конфигурация на стороне SpringBoot выполнена. Чтобы получить приложение для развертывания, нам нужно сначала собрать docker image
. Это может быть сделано:
a. cd to root of the project.
b. docker build -t companyname/projectname .
Приведенный выше шаг создаст изображение. Встроенные изображения можно просмотреть по docker images
Теперь нам нужно настроить со стороны GCP: (Не будет описательным. Много хороших статей можно найти, пожалуйста, в Google.)
а. Настроить реестр контейнеров GCP , а также gcloud-cli
на вашем ноутбуке (Это сложно для начинающих пользователей, но некоторые исследования лучше, чем набирать прямой ответ)
Как только gcloud-cli
настроен, отправьте образ в реестр.
а. докер изображения
б. скопируйте идентификатор изображения встроенного изображения.
с. Docker tag /: (Пожалуйста, ознакомьтесь с документацией GCP, например)
д. Докер Push /:
Теперь мы отправили встроенный образ в закрытое хранилище Docker.
ssh на сервер: (Этот шаг может быть выполнен несколькими способами, а для реальных случаев - идеально подходит инструмент конвейера CICD.) Здесь мы будем следовать простому методу.
a. Configure gcloud-cli with new IAM user in the server.
b. Login to gcloud repository
c. docker pull <asia.gcr.io/gcp-project-id>/<project>:<tag>
d. docker run -p <hostport>:<applicationport(6262 here)> --name container_name -d <asia.gcr.io/gcp-project-id>/<project>:<tag>
Приведенный выше шаг должен запустить Docker-контейнер и приложение SpringBoot должно быть запущено. Отсюда можно настроить обратный прокси-сервер, если требуется, или обновить параметры брандмауэра, чтобы трафик мог быть доставлен на указанный порт.
Я понимаю, это немного сложно и запутанно, но я полагаю, вам помогут многие исследования. После знакомства с docker
, gcloud-cli
, это больше не будет смущать. Дайте мне знать, если требуется какой-либо шаг в деталях.