>  기사  >  Java  >  Docker를 사용하여 SpringBoot 프로젝트를 배포하는 방법

Docker를 사용하여 SpringBoot 프로젝트를 배포하는 방법

WBOY
WBOY앞으로
2023-05-22 23:58:042943검색

먼저 간단한 스프링 부트 프로젝트를 빌드한 다음 프로젝트에 Docker 지원을 추가하고 마지막으로 프로젝트를 배포합니다.

간단한 스프링 부트 프로젝트

pom.xml에서 스프링 부트 2.0 관련 의존성 사용

<parent>
 <groupid>org.springframework.boot</groupid>
 <artifactid>spring-boot-starter-parent</artifactid>
 <version>2.0.0.release</version>
</parent>

웹 추가 및 의존성 테스트

<dependencies>
   <dependency>
 <groupid>org.springframework.boot</groupid>
 <artifactid>spring-boot-starter-web</artifactid>
  </dependency>
 <dependency>
 <groupid>org.springframework.boot</groupid>
 <artifactid>spring-boot-starter-test</artifactid>
 <scope>test</scope>
 </dependency>
</dependencies>

액세스 시 index() 메소드가 있는 dockercontroller 생성 반환: hello docker!

@restcontroller
public class dockercontroller {
 
  @requestmapping("/")
  public string index() {
    return "hello docker!";
  }
}

Startup class

@springbootapplication
public class dockerapplication {
 
 public static void main(string[] args) {
 springapplication.run(dockerapplication.class, args);
 }
}

프로젝트를 추가한 후 시작합니다. 성공적으로 시작한 후 브라우저에 액세스하면 http://localhost:8080/ 페이지가 반환됩니다. hello docker! 프로젝트 구성이 정상입니다.

Spring 부트 프로젝트에 docker 지원 추가

pom에 docker 이미지 이름 추가 이 문서에서는 이미지를 빌드하는 방법을 설명합니다.

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

이 dockerfile은 jdk 기본 환경을 구축하고 이미지에 spring boot jar를 추가합니다. 간단한 설명:

from은 이미지가 로컬이 아닌 경우 jdk8 환경을 사용한다는 의미입니다. dockerhub

  • volume에서 다운로드되며 볼륨은 /tmp 디렉터리를 가리킵니다. 스프링 부트는 내장 Tomcat 컨테이너를 사용하므로 Tomcat은 기본적으로 /tmp를 작업 디렉터리로 사용합니다. 이 명령의 효과는 다음과 같습니다. 호스트의 /var/lib/docker 디렉터리에 임시 파일을 만들고 이를 컨테이너의 /tmp 디렉터리에 연결합니다

  • add, 파일을 복사하고 이름을 바꿉니다

  • 진입점, Tomcat의 시작 시간을 단축하려면 java.security.egd의 시스템 속성을 추가하여 진입점으로 /dev/urandom을 가리키도록

  • 이런 식으로 스프링 부트 프로젝트는 도커 종속성을 추가합니다.

패키징 환경 구축

스프링부트 프로젝트를 패키징하려면 도커 환경이 필요하기 때문에 윈도우에서 도커 환경을 구축하는 것은 번거롭기 때문에 여기서는 Centos 7을 예로 들어보겠습니다.

Docker 환경 설치

Installation

<build>
 <plugins>
 <plugin>
  <groupid>org.springframework.boot</groupid>
  <artifactid>spring-boot-maven-plugin</artifactid>
 </plugin>
 <!-- docker maven 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>
   <directory>${project.build.directory}</directory>
   <include>${project.build.finalname}.jar</include>
   </resource>
  </resources>
  </configuration>
 </plugin>
 <!-- docker maven plugin -->
 </plugins>
</build>

설치가 완료된 후 다음 명령을 사용하여 docker 서비스를 시작하고 부팅 시 시작되도록 설정합니다.

from openjdk:8-jdk-alpine
volume /tmp
add spring-boot-docker-1.0.jar app.jar
entrypoint ["java","-djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

Docker China accelerator 사용

yum install docker

Docker 다시 시작

service docker start
chkconfig docker on
 
#lctt 译注:此处采用了旧式的 sysv 语法,如采用centos 7中支持的新式 systemd 语法,如下:
systemctl start docker.service
systemctl enable docker.service

docker 버전을 입력하고 버전정보가 나오면 정상적으로 설치가 된 것입니다.

jdk 설치

vi /etc/docker/daemon.json
 
#添加后:
{
  "registry-mirrors": ["https://registry.docker-cn.com"],
  "live-restore": true
}
환경 변수 구성 vim /etc/profile을 열고 내용을 추가하세요
systemctl restart docker

수정이 완료된 후 적용하세요

yum -y install java-1.8.0-openjdk*

java -version을 입력하여 버전 정보와 설치를 반환하세요 보통이다.

maven 설치

다운로드:

export java_home=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.161-0.b14.el7_4.x86_64
export path=$path:$java_home/bin

환경 변수를 수정하고 /etc/profile

source /etc/profile

에 다음 줄을 추가하여 환경 변수를 적용하려면 /etc/profile 소스를 실행해야 한다는 점을 기억하세요.

mvn -version을 입력하면 버전 정보가 반환되고 그러면 설치가 정상입니다.

이제 전체 빌드 환경이 구성되었습니다.

Docker를 사용하여 스프링 부트 프로젝트 배포

spring-boot-docker 프로젝트를 서버에 복사하고 패키징 테스트를 위한 프로젝트 경로를 입력하세요.

## 解压
tar vxf apache-maven-3.5.2-bin.tar.gz
## 移动
mv apache-maven-3.5.2 /usr/local/maven3

spring boot의 시작 로그를 보면 환경 구성에 문제가 없음을 알 수 있습니다. 다음으로 dockerfile을 사용하여 이미지를 빌드합니다.

maven_home=/usr/local/maven3
export maven_home
export path=${path}:${maven_home}/bin

첫 번째 빌드는 약간 느릴 수 있습니다. 다음 내용이 표시되면 빌드에 성공한 것입니다.

#打包
mvn package
#启动
java -jar target/spring-boot-docker-1.0.jar

docker Images 명령을 사용하여 빌드된 이미지를 확인하세요.

mvn package docker:build

springboot/spring-boot-docker는 무엇입니까? 이미지를 빌드했습니다. 다음 단계는 이미지를 실행하는 것입니다

...
step 1 : from openjdk:8-jdk-alpine
 ---> 224765a6bdbe
step 2 : volume /tmp
 ---> using cache
 ---> b4e86cc8654e
step 3 : add spring-boot-docker-1.0.jar app.jar
 ---> a20fe75963ab
removing intermediate container 593ee5e1ea51
step 4 : entrypoint java -djava.security.egd=file:/dev/./urandom -jar /app.jar
 ---> running in 85d558a10cd4
 ---> 7102f08b5e95
removing intermediate container 85d558a10cd4
successfully built 7102f08b5e95
[info] built springboot/spring-boot-docker
[info] ------------------------------------------------------------------------
[info] build success
[info] ------------------------------------------------------------------------
[info] total time: 54.346 s
[info] finished at: 2018-03-13t16:20:15+08:00
[info] final memory: 42m/182m
[info] ------------------------------------------------------------------------

시작이 완료된 후 docker ps를 사용하여 실행 중인 이미지를 봅니다.

docker images
repository           tag         image id      created       size
springboot/spring-boot-docker  latest       99ce9468da74    6 seconds ago    117.5 mb

우리가 빌드한 컨테이너가 실행 중인 것을 볼 수 있습니다. 브라우저를 방문하세요. http ://192.168.0.x:8080/,

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

를 반환하여 스프링 부트 프로젝트가 docker를 사용하여 성공적으로 배포되었음을 나타냅니다.

위 내용은 Docker를 사용하여 SpringBoot 프로젝트를 배포하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제