Сражение Spring Boot (10): развертывание проектов Spring Boot с помощью Docker

Spring Boot

В этой статье Docker используется для развертывания проектов Spring Boot. Перед развертыванием в среде должны быть установлены Docker и Maven (для упаковки), поэтому в этой статье сначала устанавливаются Docker и Maven, затем создается проект Spring Boot для поддержки развертывания Docker и, наконец, выполняется развертывание и тестирование.

Строительство окружающей среды

Установить Докер

Проверить версию ядра системы

Docker работает на CentOS 7 и требует 64-битной операционной системы и версии ядра 3.10 и выше. Убедитесь, что на машине установлено ядро ​​Linux, отвечающее требованиям. использовать командуuname -rчтобы проверить информацию о версии ядра.

[root@localhost ~]# uname -r
3.10.0-957.el7.x86_64

Установите Докер на CentOS 7

использовать командуyum install -y dockerУстановить Docker, «-y» означает не спрашивать, установить с конфигурацией по умолчанию.

Запустите службу Docker и настройте ее автоматический запуск при загрузке.

Используйте следующие команды:

systemctl start docker.service
systemctl enable docker.service

Посмотреть информацию о версии

входитьdocker version, возвращенная информация о версии указывает на то, что установка Docker прошла успешно.

[root@localhost ~]# docker version
Client:
 Version:         1.13.1
 API version:     1.26
 Package version: docker-1.13.1-96.gitb2f74b2.el7.centos.x86_64
 Go version:      go1.10.3
 Git commit:      b2f74b2/1.13.1
 Built:           Wed May  1 14:55:20 2019
 OS/Arch:         linux/amd64

Server:
 Version:         1.13.1
 API version:     1.26 (minimum version 1.12)
 Package version: docker-1.13.1-96.gitb2f74b2.el7.centos.x86_64
 Go version:      go1.10.3
 Git commit:      b2f74b2/1.13.1
 Built:           Wed May  1 14:55:20 2019
 OS/Arch:         linux/amd64
 Experimental:    false

Установите Maven и настройте образ Alibaba Cloud

Скачать Maven

wget https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gz

распаковать и переместить

tar vxf apache-maven-3.5.4-bin.tar.gz 
mv apache-maven-3.5.4 /usr/local/maven3

Настроить переменные среды

открытые переменные окруженияvim /etc/profile, добавьте следующее:

MAVEN_HOME=/usr/local/maven3
export MAVEN_HOME
export PATH=${PATH}:${MAVEN_HOME}/bin

Сохранить и выйти::wq

Обновите конфигурацию переменных среды, чтобы они вступили в силу:source /etc/profile

Посмотреть информацию о версии

использовать командуmvn -vсмотреть

[root@localhost ~]# mvn -v
Apache Maven 3.5.4 (1edded0938998edf8bf061f1ceb3cfdeccf443fe; 2018-06-18T02:33:14+08:00)
Maven home: /usr/local/maven3
Java version: 1.8.0_211, vendor: Oracle Corporation, runtime: /usr/local/java/jdk1.8.0_211/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-957.el7.x86_64", arch: "amd64", family: "unix"

использоватьmvn packageКоманда упакована, но сообщается об ошибке, указывающей на то, что в соединении отказано.

image

Решение: настроить Alibaba Cloud Mirror для Maven Перейдите в каталог установки maven, откройте файл settings.xml, в<mirrors>Внутри тега добавьте:

<mirror> 
    <id>alimaven</id> 
    <name>aliyun maven</name> 
    <url>http://maven.aliyun.com/nexus/content/groups/public/</url> 
    <mirrorOf>central</mirrorOf> 
</mirror> 

Проект Spring Boot добавляет поддержку Docker

Новый проект Spring Boot

Создайте новый проект Spring Boot и добавьте простой DockerController для удобства тестирования.

@RestController
@SpringBootApplication
@RequestMapping("/docker")
public class DockerController {

    @RequestMapping("/hello")
    @ResponseBody
    public String hello() {
        return "Hello Docker";
    }
}

Добавить поддержку докера

Добавьте имя образа Docker в pom.xml.

<properties>
    <docker.image.prefix>springboot</docker.image.prefix>
</properties>

Добавьте плагин Docker:

       <!-- docker插件 -->
        <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>
                        <directory>${project.build.directory}</directory>
                        <include>${project.build.finalName}.jar</include>
                    </resource>
                </resources>
            </configuration>
        </plugin>

Написать Dockerfile

Создайте файл Dockerfile в каталоге src/main/docker.Файл Dockerfile используется для описания того, как создать образ.

FROM java:8
VOLUME /tmp
ADD docker-0.0.1-SNAPSHOT.jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

Инструкция FROM указывает существующий образ и сообщает Docker, что последующие инструкции основаны на нем. Например:FROM java:8Указывает, что среда Jdk1.8 используется в качестве базового образа для построения образа.

VOLUME, VOLUME указывает на каталог /tmp.Поскольку Spring Boot использует встроенный контейнер Tomcat, Tomcat по умолчанию использует /tmp в качестве рабочего каталога. Результатом этой команды является создание временного файла в каталоге хоста /var/lib/docker и его связывание с каталогом /tmp в контейнере.

ДОБАВИТЬ, скопировать файлы и переименовать

ENTRYPOINT, чтобы сократить время запуска Tomcat, добавьте системное свойство java.security.egd, указывающее на /dev/urandom как ENTRYPOINT.

Разверните проект Spring Boot

Скопируйте докер кода проекта на сервер и введите путь к проекту для тестирования пакетов.

Бэйл:mvn packageбегать:java -jar target/spring-boot-docker-1.0.jar

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

image

Создайте образ Dockermvn package docker:build. Вы можете видеть, что Docker-образ был успешно собран.Если вы внимательно посмотрите на журнал, вы обнаружите, что четыре шага полностью соответствуют инструкциям в Dockerfile.

image

использоватьdocker imagesКоманда для просмотра построенного образа:

[root@localhost ~]# docker images
REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE
springboot/docker       latest              39aabeebb971        5 days ago          660 MB

Запустите образ докера:docker run -p 8080:8080 -t springboot/docker

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

image

Полный код:Адрес GitHub

Ссылаться на:Spring Boot 2.0 (4): развертывание Spring Boot с помощью Docker