0 Окружающая среда
Линукс:бродяга установить линукс
1 Подготовка
- Сначала создайте новый проект SpringBoot и добавьте в pom.xml следующие зависимости:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<!--web模块-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.3.3.RELEASE</version>
</dependency>
- В тег в pom.xml добавить:
<properties>
<java.version>1.8</java.version>
<!--规定docker打包后镜像名称前缀-->
<docker.image.prefix>springboot</docker.image.prefix>
</properties>
- Добавьте следующие плагины в тег pom.xml: (создайте полный код тега)
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.0</version>
<configuration>
<!--镜像名称-->
<imageName>${docker.image.prefix}/${project.artifactId}</imageName>
<dockerDirectory>src/main/docker</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<!--jar 包所在目录,缺省为target-->
<directory>${project.build.directory}</directory>
<!--jar 包名,缺省为 $project.artifactId}-${project.version}-->
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
</plugins>
</build>
- Измените номер порта (необязательно)
В application.properties добавить:
server.port=8081
- Добавьте контроллер для тестирования с помощью
package com.ifknow.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author: ifknow <br>
* @date: 2020/9/8 10:32 <br>
* @description: 测试
*/
@RestController
public class HelloController {
@RequestMapping("/hello")
public String hello() {
return "Hello Docker!";
}
}
- Создайте новую папку докеров в src/main и создайте ее в папке докеровDockerfileдокумент(важный!)
Содержимое Dockerfile выглядит следующим образом:
# 使用 JDK 8 环境为基础环境,如果镜像不是本地的将会从 DockerHub 进行下载
FROM openjdk:8-jdk-alpine
# 在宿主机的 /var/lib/docker 目录下创建一个临时文件并把它链接到 tomcat 容器的工作目录 /tmp目录
VOLUME /tmp
# 复制文件并重命名 spring-boot-docker-1.0.jar 表示打包后的 jar 包名称
ADD spring-boot-docker-1.0.jar app.jar
# 为了缩短Tomcat启动时间,添加 java.security.egd 的系统属性指向 /dev/urandom 作为ENTRYPOINT
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
- загрузить
Загрузите проект Springboot в каталог в Linux, вы можете использовать SecureCRT или Xftp.
- разное
Среда Linux для установкимавен, докер.
2 Разверните проект пакета springboot jar
- Перейдите в каталог проекта:
cd spring-boot-docker/
- Выполните операцию упаковки:
mvn clean package
- Запустите тест пакета jar
java -jar target/spring-boot-docker-1.0.jar
- После успешного запуска создайте образ Dockerfile.
mvn package docker:build
..... Лай Синь ждет, и появляется содержимое, показанное на следующем рисунке, что указывает на то, что сборка образа прошла успешно.
- Посмотреть зеркало
# 列出所有镜像
docker images
- запустить изображение
docker run -p 8081:8081 -t springboot/spring-boot-docker
# -p 8081:8081 的含义是:将本地主机的 8081 端口映射到容器的 8081 端口(冒号前是主机端口)
# -t springboot/spring-boot-docker 的含义是:运行那个镜像
- Просмотр выполняемого зеркального отображения
docker ps
# docker ps -a #查看所有所有镜像包括正在运行和已结束的
- Доступ в браузереhttp://ip:8081/hello, страница вернет Hello Docker!
3 Разверните проект военного пакета
Создать новый проект военного пакета сложнее, вот решение: изменить его на основе вышеуказанного проекта пакета Jar!
Изменить pom.xml
- Загрузите упакованный военный пакет проекта в указанную директорию на сервере!
- Установите образ tomcat и запустите
# 搜索tomcat镜像
docker search tomcat
# 下载镜像
docker pull docker.io/tomcat
# 启动 tomcat 镜像
# -d 的含义是后台运行 -p 的含义是端口映射,将主机的 8088 端口 映射到 docker 容器端口
docker run -d -p 8088:8080 docker.io/tomcat
- контрольная работа
Открытый доступ в браузереhttp://ip:8088.
**Примечание.** Если появляется ошибка 404, возможная причина, по которой порт не открыт. Но это не причина для меня После просмотра каталога контейнера tomcat в докере и официального каталога tomcat мы видим, что webapp.dist в контейнере является правильным каталогом веб-приложения.
Решение:
(Источник изображения:blog.CSDN.net/QQ_40891009…)
(Источник изображения:blog.CSDN.net/QQ_40891009…)
- развертывание военного пакета
Скопируйте пакет war, через который мы прошли, в веб-приложения контейнера tomcat.
Просмотр запущенных изображений:
docker ps
Операция копирования:
docker cp /root/workspace/spring-boot-docker-0.0.1-SNAPSHOT.war 8f63b712c7f:/usr/local/tomcat/webapps
# cp 的含义是拷贝
# /root/workspace/spring-boot-docker-0.0.1-SNAPSHOT.war 的含义是war包路径
# 8f63b712c7f:/usr/local/tomcat/webapps:8f63b712c7f的含义是tomcat容器的 container_id
Контейнер tomcat автоматически распаковывает военный пакет.
- тестовый доступ
Доступ в вашем браузере:http://ip:8088/spring-boot-docker-0.0.1-SNAPSHOT/hello