Разверните Spring Boot с помощью Docker

Spring Boot задняя часть Docker

Развитие технологии Docker предоставило более удобную среду для лендинга микросервисов, развернуть Spring Boot с Docker на самом деле очень просто, в этой статье мы кратко его изучим.

Сначала создайте простой проект Spring Boot, затем добавьте в проект поддержку Docker и, наконец, разверните проект.

Простой проект Spring Boot

существует pom.xml, используя зависимости, связанные с Spring Boot 2.0

  1. <parent>

  2.  <groupId>org.springframework.boot</groupId>

  3.  <artifactId>spring-boot-starter-parent</artifactId>

  4.  <version>2.0.0.RELEASE</version>

  5. </parent>

скопировать код

Добавьте веб-зависимости и тестовые зависимости

  1. <dependencies>

  2.  <dependency>

  3.  <groupId>org.springframework.boot</groupId>

  4.  <artifactId>spring-boot-starter-web</artifactId>

  5.  </dependency>

  6.  <dependency>

  7.  <groupId>org.springframework.boot</groupId>

  8.  <artifactId>spring-boot-starter-test</artifactId>

  9.  <scope>test</scope>

  10.  </dependency>

  11. </dependencies>

скопировать код

Создайте DockerController сindex()метод, который возвращает при доступе:Hello Docker !

  1. @RestController

  2. public class DockerController {

  3.  @RequestMapping("/")

  4.  public String index() {

  5.  return "Hello Docker!";

  6.  }

  7. }

скопировать код

стартовый класс

  1. @SpringBootApplication

  2. public class DockerApplication {

  3.  public static void main(String[] args) {

  4.  SpringApplication.run(DockerApplication.class, args);

  5.  }

  6. }

скопировать код

После добавления проекта запустите проект.После успешного запуска браузер спросит:http://localhost:8080/, страница возвращает:Hello Docker ! , что указывает на нормальную конфигурацию проекта Spring Boot.

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

существует pom.xml-propertiesДобавьте имя образа Docker в

  1. <properties>

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

  3. </properties>

скопировать код

Добавьте плагин сборки Docker в plugins:

  1. <build>

  2.  <plugins>

  3.  <plugin>

  4.  <groupId>org.springframework.boot</groupId>

  5.  <artifactId>spring-boot-maven-plugin</artifactId>

  6.  </plugin>

  7.  <!-- Docker maven plugin -->

  8.  <plugin>

  9.  <groupId>com.spotify</groupId>

  10.  <artifactId>docker-maven-plugin</artifactId>

  11.  <version>1.0.0</version>

  12.  <configuration>

  13.  <imageName>${docker.image.prefix}/${project.artifactId}</imageName>

  14.  <dockerDirectory>src/main/docker</dockerDirectory>

  15.  <resources>

  16.  <resource>

  17.  <targetPath>/</targetPath>

  18.  <directory>${project.build.directory}</directory>

  19.  <include>${project.build.finalName}.jar</include>

  20.  </resource>

  21.  </resources>

  22.  </configuration>

  23.  </plugin>

  24.  <!-- Docker maven plugin -->

  25.  </plugins>

  26. </build>

скопировать код

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

  1. FROM openjdk:8-jdk-alpine

  2. VOLUME /tmp

  3. ADD spring-boot-docker-1.0.jar app.jar

  4. ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

скопировать код

Этот файл Dockerfile очень прост, создайте базовую среду Jdk, добавьте Spring Boot Jar в образ и кратко объясните:

  • FROM , указывающее, что в качестве базового образа используется среда Jdk8, если образ не локальный, он будет загружен с DockerHub

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

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

  • ENTRYPOINT, чтобы сократить время запуска Tomcat, добавьтеjava.security.egdСистемное свойство указывает на/dev/urandomкак ТОЧКА ВХОДА

На этом проект Spring Boot завершается добавлением зависимостей Docker.

Создайте среду упаковки

Нам нужна среда Docker для упаковки проекта Spring Boot.Создать среду Docker в Windows очень сложно, поэтому я буду использовать Centos 7 в качестве примера.

Установите среду Docker

Установить

  1. yum install docker

скопировать код

После завершения установки используйте следующую команду, чтобы запустить службу Docker и настроить ее на запуск при загрузке:

  1. ervice docker start

  2. chkconfig docker on

  3. #LCTT 译注:此处采用了旧式的 sysv 语法,如采用CentOS 7中支持的新式 systemd 语法,如下:

  4. systemctl start docker.service

  5. systemctl enable docker.service

скопировать код

Используйте Docker China Accelerator

  1. vi /etc/docker/daemon.json

  2. #添加后:

  3. {

  4.  "registry-mirrors": ["https://registry.docker-cn.com"],

  5.  "live-restore": true

  6. }

скопировать код

перезапустить докер

  1. systemctl restart docker

скопировать код

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

Установить JDK

  1. yum -y install java-1.8.0-openjdk*

скопировать код

Настройте переменные среды для открытияvim /etc/profileДобавьте что-нибудь

                                
  1. export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.161-0.b14.el7_4.x86_64

  2. export PATH=$PATH:$JAVA_HOME/bin

скопировать код

После того, как модификация завершена, сделайте ее эффективной

  1. source /etc/profile

скопировать код

Входитьjava -versionЕсли возвращается информация о версии, установка проходит нормально.

Установить МАВЕН

скачать: http://mirrors.shu.edu.cn/apache/maven/maven-3/3.5.2/binaries/apache-maven-3.5.2-bin.tar.gz

                                        
  1. ## 解压

  2. tar vxf apache-maven-3.5.2-bin.tar.gz

  3. ## 移动

  4. mv apache-maven-3.5.2 /usr/local/maven3

скопировать код

Изменить переменные среды, в/etc/profileДобавьте следующие строки в

                                            
  1. MAVEN_HOME=/usr/local/maven3

  2. export MAVEN_HOME

  3. export PATH=${PATH}:${MAVEN_HOME}/bin

скопировать код

не забудьте выполнитьsource /etc/profileЗаставьте переменные среды действовать.

Входитьmvn -versionЕсли возвращается информация о версии, установка проходит нормально.

На этом настройка всей среды сборки завершена.

Развертывание проектов Spring Boot с помощью Docker

проектspring-boot-dockerНа сервере копирования введите путь к проекту для выполнения теста упаковки.

                                                        
  1. #打包

  2. mvn package

  3. #启动

  4. java -jar target/spring-boot-docker-1.0.jar

скопировать код

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

  1. mvn package docker:build

скопировать код

Первая сборка может быть немного медленной, но сборка считается успешной, если вы видите следующее:

  1. ...

  2. Step 1 : FROM openjdk:8-jdk-alpine

  3.  ---> 224765a6bdbe

  4. Step 2 : VOLUME /tmp

  5.  ---> Using cache

  6.  ---> b4e86cc8654e

  7. Step 3 : ADD spring-boot-docker-1.0.jar app.jar

  8.  ---> a20fe75963ab

  9. Removing intermediate container 593ee5e1ea51

  10. Step 4 : ENTRYPOINT java -Djava.security.egd=file:/dev/./urandom -jar /app.jar

  11.  ---> Running in 85d558a10cd4

  12.  ---> 7102f08b5e95

  13. Removing intermediate container 85d558a10cd4

  14. Successfully built 7102f08b5e95

  15. [INFO] Built springboot/spring-boot-docker

  16. [INFO] ------------------------------------------------------------------------

  17. [INFO] BUILD SUCCESS

  18. [INFO] ------------------------------------------------------------------------

  19. [INFO] Total time: 54.346 s

  20. [INFO] Finished at: 2018-03-13T16:20:15+08:00

  21. [INFO] Final Memory: 42M/182M

  22. [INFO] ------------------------------------------------------------------------

скопировать код

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

                                                            
  1. docker images

  2. REPOSITORY TAG IMAGE ID CREATED SIZE

  3. springboot/spring-boot-docker latest 99ce9468da74 6 seconds ago 117.5 MB

скопировать код

springboot/spring-boot-dockerэто образ, который мы создали, следующим шагом будет запуск образа

                                                                
  1. docker run -p 8080:8080 -t springboot/spring-boot-docker

скопировать код

После завершения запуска мы используемdocker psПроверьте бегущее изображение:

                                                                    
  1. docker ps

  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

  3. 049570da86a9 springboot/spring-boot-docker "java -Djava.security" 30 seconds ago Up 27 seconds 0.0.0.0:8080->8080/tcp determined_mahavira

скопировать код

Вы можете видеть, что созданный нами контейнер работает, зайдите в браузер:http://192.168.0.x:8080/,возвращение

                                                                        
  1. Hello Docker!

скопировать код

Это показывает, что проект Spring Boot был успешно развернут с помощью Docker!

Пример кода: https://github.com/ityouknow/spring-cloud-examples

END

Ищу тысячу хардкорных читателей