Версия среды разработки персональных приложений SpringBoot2.1 — использование Docker + Nginx для развертывания проекта

Spring Boot
Версия среды разработки персональных приложений SpringBoot2.1 — использование Docker + Nginx для развертывания проекта

Эта статья является подразделом фреймворка персональной разработки SpringBoot 2.1, сначала прочтите ее.Фреймворк персональной разработки версии SpringBoot 2.1Прочтите эту статью еще раз

Адрес бэкенд-проекта:Версия SpringBoot 2.1 среды разработки персональных приложений

Адрес фронтенд проекта:ywh-vue-admin

Адрес предварительного просмотра:www.zandy.top

Подготовить

Перед формальным развертыванием на сервере внесите некоторые изменения в проект и установите на сервер необходимое программное обеспечение, такое как mysql, redis, nginx и т. д., поскольку оно запускается с помощью Docker, поэтому вам также необходимо установить Docker.

Среда развертывания:

Поскольку наш бэкэнд открыт на порту 8082, нам нужно открыть порт 8082 в группе безопасности Alibaba Cloud.

Оптимизируйте серверные проекты

В проекте возникли некоторые ошибки при упаковке. Я исправил это, так что возьму это здесь и не буду сосредотачиваться на записи. Если это мой проект клона, достаточно сразу упаковать и развернуть.

  • Непроверенные или небезопасные операции используются в .java с использованием IDEA. Примечание. Для получения подробной информации перекомпилируйте с параметром -Xlint:unchecked.

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

@SuppressWarnings("unchecked")

В классе RedisCacheConfig модуля кэша есть ссылка на добавление универсального типа, и новое предупреждение выдается без универсального типа.

RedisTemplate<String, Object> template = new RedisTemplate();
# 修改为
RedisTemplate<String, Object> template = new RedisTemplate<>();
  • Удалите классы запуска и тестовые классы других модулей, кроме основного модуля.

  • Удалите файлы pom других модулей, кроме основного модуля.< build >Этикетка

Оптимизируйте интерфейсные проекты vue

После открытия внешнего пакета на главной странице появится пустая страница. Это связано с тем, что файлы css и js не могут быть найдены из-за проблемы с путем. Измените config->index.js в

# /代表的是根目录
assetsPublicPath: '/'
# 修改为当前目录
assetsPublicPath: './'

Об ошибке на рисунке ниже сообщалось в сборке npm run, по информации версия не совпадала.

20190411095554

  • Измените package.json вhtml-webpack-plugin": "^4.0.0-alphaзаhtml-webpack-plugin": "4.0.0-alpha
  • Удалите node_modules, удалите package-lock.json, повторно установите npm.

Два способа упаковки бэкенда

Упаковка может быть упакована двумя способами: один — загрузить пакет jar на сервер после локальной упаковки, а другой — упаковать проект на сервере после размещения проекта на сервере.

Уведомление: Перед началом официальной упаковки IP-адрес подключения к базе данных, адрес файла журнала logback.xml и адрес подключения redis должны быть изменены на соответствующие IP-адрес и адрес вашего собственного сервера. Адрес подключения к базе данных, который я заполнил, является внутренним сетевым адресом, а IP-адрес общедоступной сети, который я заполнил для redis.На самом деле, я весьма озадачен здесь.Очевидно, что redis и проект находятся на этой машине, почему я не могу использовать ip внутренней сети или 127.0.0.1 подключить?, это проблема.

Внутренняя локальная упаковка и развертывание

Используйте проекты Maven в правой части редактора IDEA, чтобы сначала щелкнуть очистить, не сообщая об ошибке, а затем щелкнуть пакет, После нажатия верхней стрелки это означает, что этап тестирования пропускается в процессе упаковки, не забудьте щелкнуть.

20190410152310
20190410151707

После нажатия на оба сообщения об ошибке не сообщается.Если пакет успешно упакован нормально, в целевом файле основного модуля будет наш пакет jar, названный в соответствии с идентификатором артефакта и номером версии.

20190410152604

Создайте файл Dockerfile без имени суффикса, соберите образ проекта, содержимое будет следующим

# 基础镜像 表示基镜像是java8
FROM java:8
# 表示 指定临时文件目录为/tmp。其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp。该步骤是可选的
VOLUME /tmp
# 表示将jar包添加到镜像中,并重命名app.jar
ADD core-0.0.1-SNAPSHOT.jar app.jar
RUN sh -c 'touch /app.jar'
# 代表的是jvm的参数,如果有需要可以写在这里
ENV JAVA_OPTS=""
# 表示启动时运行 java -jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

Загрузите jar-пакет и файл Dockerfile на наш сервер, определите местоположение самостоятельно и загрузите через команду rz.Эти два файла могут находиться в одной папке.

$ rz
# 在上传后的文件夹中开始构建,指定了镜像的名字为ywh-frame
$ docker build -t ywh-frame .
# 等待构建成功后,可通过命令查看
$ docker images
# 运行此镜像文件
$ docker run -d --name ywh-frame --restart always -p 8082:8082  -v /ywh/projectwork/spring/logs:/usr/local/logs  ywh-frame
  • -d означает запуск в фоновом режиме,
  • -p обозначает сопоставление портов, родной: контейнер
  • -v сопоставление файлов, этот файл является файлом журнала проекта, правая сторона - расположение файла журнала контейнера, это местоположение можно настроить в файле logback-spring.xml основного модуля, который записан в примечаниях из предыдущих глав
  • --name представляет имя контейнера
  • --restart всегда означает запуск с загрузки

Вы можете использовать команду, чтобы проверить журнал, чтобы убедиться, что он запускается нормально.Если есть ненормальная информация, вам необходимо исправить ее в соответствии с конкретной ненормальной информацией.

Серверная онлайн-упаковка и развертывание (не рекомендуется)

Этот метод более хлопотный, и в Linux необходимо установить некоторые необходимые среды,Не рекомендуется, но все же записать.

Установите среду выполнения Java и maven

Необходимо заменить плагин упаковки pom-файла модуля ядра на плагин docker-maven

<plugin>
	<groupId>com.spotify</groupId>
	<artifactId>docker-maven-plugin</artifactId>
	<version>1.2.0</version>
	<configuration>
		<imageName>${project.artifactId}</imageName>
		<dockerDirectory>${project.build.outputDirectory}</dockerDirectory>
		<resources>
			<resource>
				<targetPath>/</targetPath>
				<directory>${project.build.directory}</directory>
				<include>${project.build.finalName}.jar</include>
			</resource>
		</resources>
	</configuration>
</plugin>
<imageName></imageName> 镜像的名字
<dockerDirectory></dockerDirectory> Dockerfile文件的位置
<directory></directory> target目录的位置
<include></include> 打包项目后的jar包名字

Создайте файл Dockerfile без суффикса, просто поместите этот файл в каталог ресурсов под основным модулем или в другие каталоги, просто укажите местоположение в метке выше.

# 基础镜像 表示基镜像是java8
FROM java:8
# 表示 指定临时文件目录为/tmp。其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp。该步骤是可选的
VOLUME /tmp
# 表示将jar包添加到镜像中,并重命名app.jar
ADD core-0.0.1-SNAPSHOT.jar app.jar
RUN sh -c 'touch /app.jar'
# 代表的是jvm的参数,如果有需要可以写在这里
ENV JAVA_OPTS=""
# 表示启动时运行 java -jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

Загрузите проект на сервер, просто загрузите файлы src и pom каждого модуля.

#找到项目所在目录
$ cd /ywh/projectwork/spring/ywh-frame
#根目录下进行 install
$ mvn clean install package -Dmaven.test.skip=true
#进入core模块下
$ cd ywh-starter-core/
#执行maven命令生成jar包和镜像
$ mvn package docker:build -Dmaven.test.skip=true
# docker运行命令
$ docker run -d --name ywh-frame --restart always -p 8082:8082  -v /ywh/projectwork/spring/logs:/usr/local/logs  ywh-frame

Упаковка и развертывание внешнего интерфейса vue-проекта

Уведомление: Перед упаковкой внешнего проекта вам необходимо изменить config->prod.env.js вBASE_APIIP-адрес — это IP-адрес моего собственного сервера. Я заполнил общедоступный IP-адрес, чтобы обеспечить возможность изменения BASE_API в dev.env.js.

Согласно предпосылке node_modules, запуск команды напрямую создаст следующую команду в проекте, которая создаст папку dist в этом проекте.

# 在前端项目的文件夹下运行此命令
$ npm run build

20190411101936

На сервере необходимо установить Nginx.Способ установки описан в ссылке в начале заметки, а также запускается докером.В это время сгенерированные статические файлы можно упаковать и загрузить в корневую директорию сервер Liunx Nginx, в основном для установки и настройки Nginx, страница представляет собой не что иное, как статическая страница.

$ cd /home/www/website
$ rz 
$ tar -xvf dist.tar

конец

Если все запустилось нормально, на вашем сервере должно быть запущено четыре контейнера

20190411105107
Ниже приведен мой адрес предварительного просмотра, потому что я не пришел, чтобы изменить и спланировать проект vue, управляемый серверной частью, поэтому это просто начальная страница, а другие страницы, кроме домашней страницы, не могут быть доступны в обычном режиме, потому что нет mock support. , но это не имеет значения, потому что моя основная цель - ознакомиться с этими процессами, я могу добавить конкретный бизнес потихоньку позже, потому что регистрация доменного имени более хлопотна, поэтому теперь я могу получить к нему доступ только по IP-адресу.

  • Адрес предварительного просмотра:www.zandy.top