Spring Boot 응용 프로그램 이 Docker 에 발 표 된 실현
준비 하 다.
필요 한 도구 및 실행 환경:
우선,Spring Boot 프로젝트 를 만들어 야 합 니 다.Spring Tool Suite 와 IntelliJ IDEA 는 모두 자체 플러그 인 을 만 들 수 있 고http://start.spring.io/에서 만 들 수 있 습 니 다.이런 방식 을 추천 합 니 다.폼 에 있 는
Group Id
과Artifact Id
을 작성 한 후 Generate Project 단 추 를 누 르 면 생 성 되 며 다운로드 한 프로젝트 를 원 하 는 IDE 에 가 져 옵 니 다.pom.xml 파일 을 수정 하고 docker-maven-plugin 을 추가 합 니 다.
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.matrixstudio.springboot</groupId>
<artifactId>docker</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>docker</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.2.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<docker.image.prefix>springio</docker.image.prefix>
</properties>
<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>
<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>0.4.3</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>
</plugins>
</build>
</project>
docker-maven-plugin 플러그 인 은 Spring Boot 프로젝트 를 Docker 미 러 로 구축 하 는 데 사 용 됩 니 다.DockerApplication.java
파일 을 열 고 다음 내용 으로 수정 합 니 다.
package org.matrixstudio.springboot;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@SpringBootApplication
@RestController
public class DockerApplication {
@RequestMapping("/")
public String home() {
return "Hello Docker World";
}
public static void main(String[] args) {
SpringApplication.run(DockerApplication.class, args);
}
}
컴 파일 및 실행다음 명령 을 실행 하여 Spring Boot 프로젝트 를 실행 합 니 다.
mvn package && java -jar target/docker-0.0.1-SNAPSHOT.jar
브 라 우 저 를 열 고 입력http://localhost:8080
하 십시오.'Hello Docker World'가 나타 나 면 실행 에 성 공 했 음 을 설명 합 니 다.주:위의 명령 을 실행 할 때 Maven 공식 창고 에서 의존 가방 을 많이 다운로드 해 야 합 니 다.국내 네트워크 가 불안정 하고 다운로드 속도 가 느 리 므 로 제3자 가 제공 하 는 미 러 스테이션,예 를 들 어 아 리 의 Maven 미 러 창 고 를 사용 하 는 것 을 고려 할 수 있 습 니 다.pom.xml 에 아래 설정 을 추가 합 니 다:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.matrixstudio.springboot</groupId>
<artifactId>docker</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<!-- Dependencies -->
......
<!-- Build -->
......
<!-- Aliyun repository -->
<repositories>
<repository>
<id>central</id>
<name>aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<releases>
<enabled>true</enabled>
</releases>
</repository>
</repositories>
</project>
용기 화 항목우선 기계 에 Docker 가 설치 되 어 있 는 지 확인 해 야 합 니 다.Docker 가 리 눅 스 서버 에 설치 되 어 있다 면 위의 Spring Boot 프로젝트 를 이 서버 에 업로드 해 야 합 니 다.아래 절 차 는 리 눅 스 환경 에서 작 동 한다 고 가정 합 니 다.
Dockerfile 만 들 기
Docker 는
Dockerfile
라 는 파일 을 사용 하여 image 층 을 지정 합 니 다.따라서 우 리 는 먼저Dockerfile
파일 을 만 들 고 아래 명령 을 실행 하여Dockerfile
파일 을 만들어 야 합 니 다.
sudo tee src/main/docker/Dockerfile <<-'EOF'
FROM frolvlad/alpine-oraclejdk8:slim
VOLUME /tmp
ADD docker-0.0.1-SNAPSHOT.jar app.jar
RUN sh -c 'touch /app.jar'
ENV JAVA_OPTS=""
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]
EOF
위의 명령 을 대충 설명 하 세 요.다음 명령 을 실행 하여 Docker 미 러 구축:
mvn package docker:build
빌 드 완료 후 다음 명령 을 실행 합 니 다:
sudo docker images
결 과 는: REPOSITORY TAG IMAGE ID CREATED SIZE
springio/docker latest 7e2ba2f7e81e 2 minutes ago 195 MB
frolvlad/alpine-oraclejdk8 slim 00d8610f052e 4 days ago 167 MB
우리 가 구축 한 미 러 가 이미 나 타 났 음 을 볼 수 있 습 니 다.다음 단 계 는 이 미 러 를 실행 하 는 것 입 니 다.
Docker 미 러 실행
이전 빌 드 된 Docker 미 러 를 실행 하려 면 다음 명령 을 실행 하 십시오.
sudo docker run -p 8080:8080 -t springio/docker
만약 의외 의 사고 가 발생 하지 않 는 다 면,아래 의 출력 내용 을 볼 수 있 습 니 다.
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v1.5.2.RELEASE)
2017-03-08 03:34:59.434 INFO 6 --- [ main] o.m.springboot.DockerApplication : Starting DockerApplication v0.0.1-SNAPSHOT on 00eed53e6928 with PID 6 (/app.jar started by root in /)
2017-03-08 03:34:59.445 INFO 6 --- [ main] o.m.springboot.DockerApplication : No active profile set, falling back to default profiles: default
2017-03-08 03:34:59.752 INFO 6 --- [ main] ationConfigEmbeddedWebApplicationContext : Refreshing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@4b9af9a9: startup date [Wed Mar 08 03:34:59 GMT 2017]; root of context hierarchy
2017-03-08 03:35:03.755 INFO 6 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat initialized with port(s): 8080 (http)
2017-03-08 03:35:03.807 INFO 6 --- [ main] o.apache.catalina.core.StandardService : Starting service Tomcat
2017-03-08 03:35:03.821 INFO 6 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet Engine: Apache Tomcat/8.5.11
2017-03-08 03:35:04.042 INFO 6 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2017-03-08 03:35:04.043 INFO 6 --- [ost-startStop-1] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 4303 ms
2017-03-08 03:35:04.441 INFO 6 --- [ost-startStop-1] o.s.b.w.servlet.ServletRegistrationBean : Mapping servlet: 'dispatcherServlet' to [/]
2017-03-08 03:35:04.455 INFO 6 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'characterEncodingFilter' to: [/*]
2017-03-08 03:35:04.457 INFO 6 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'hiddenHttpMethodFilter' to: [/*]
2017-03-08 03:35:04.468 INFO 6 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'httpPutFormContentFilter' to: [/*]
2017-03-08 03:35:04.468 INFO 6 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'requestContextFilter' to: [/*]
2017-03-08 03:35:05.110 INFO 6 --- [ main] s.w.s.m.m.a.RequestMappingHandlerAdapter : Looking for @ControllerAdvice: org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@4b9af9a9: startup date [Wed Mar 08 03:34:59 GMT 2017]; root of context hierarchy
2017-03-08 03:35:05.390 INFO 6 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/]}" onto public java.lang.String org.matrixstudio.springboot.DockerApplication.home()
2017-03-08 03:35:05.402 INFO 6 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
2017-03-08 03:35:05.404 INFO 6 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity<java.util.Map<java.lang.String, java.lang.Object>> org.springframework.boot.autoconfigure.web.BasicErrorController.error(javax.servlet.http.HttpServletRequest)
2017-03-08 03:35:05.512 INFO 6 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2017-03-08 03:35:05.512 INFO 6 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2017-03-08 03:35:05.639 INFO 6 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2017-03-08 03:35:06.019 INFO 6 --- [ main] o.s.j.e.a.AnnotationMBeanExporter : Registering beans for JMX exposure on startup
2017-03-08 03:35:06.168 INFO 6 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http)
2017-03-08 03:35:06.183 INFO 6 --- [ main] o.m.springboot.DockerApplication : Started DockerApplication in 7.893 seconds (JVM running for 8.743)
2017-03-08 03:35:56.728 INFO 6 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring FrameworkServlet 'dispatcherServlet'
2017-03-08 03:35:56.728 INFO 6 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : FrameworkServlet 'dispatcherServlet': initialization started
2017-03-08 03:35:56.774 INFO 6 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : FrameworkServlet 'dispatcherServlet': initialization completed in 43 ms
실행 중인 Docker 용 기 를 보 려 면 다음 명령 을 실행 하 십시오.
sudo docker ps
Docker 용기 가 실행 중인 것 을 볼 수 있 습 니 다.
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
00eed53e6928 springio/docker "sh -c 'java $JAVA..." About a minute ago Up About a minute 0.0.0.0:8080->8080/tcp fervent_leavitt
현재 입력http://localhost:8080'Hello Docker World'결 과 를 볼 수 있 습 니 다.용 기 를 멈 추 려 면 다음 명령 을 실행 할 수 있 습 니 다.
sudo docker stop 00e
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[MeU] Hashtag 기능 개발➡️ 기존 Tag 테이블에 존재하지 않는 해시태그라면 Tag , tagPostMapping 테이블에 모두 추가 ➡️ 기존에 존재하는 해시태그라면, tagPostMapping 테이블에만 추가 이후에 개발할 태그 기반 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.