Docker × Spring Boot 환경 구축

Docker × Spring Boot 환경 구축



개요



Docker를 사용하여 Spring Boot 환경을 구축합니다.
동작 확인으로 Hello World를 브라우저에 표시합니다.

환경


  • macOS Catalina 버전 10.15.5
  • Docker 버전 19.03.8
  • docker-compose version 1.25.5
  • openjdk 14.0.1 2020-04-14
  • Spring Boot 2.3.1

  • 구성



    최종적으로는 다음과 같은 구성이 됩니다.
    ├── docker-compose.yml
    └── server
        ├── HELP.md
        ├── build
        │   ├── classes
        │   │   └── java
        │   │       ├── main
        │   │       │   └── com
        │   │       │       └── example
        │   │       │           └── api
        │   │       │               └── ApiApplication.class
        │   │       └── test
        │   │           └── com
        │   │               └── example
        │   │                   └── api
        │   │                       └── ApiApplicationTests.class
        │   ├── generated
        │   │   └── sources
        │   │       ├── annotationProcessor
        │   │       │   └── java
        │   │       │       ├── main
        │   │       │       └── test
        │   │       └── headers
        │   │           └── java
        │   │               ├── main
        │   │               └── test
        │   ├── libs
        │   │   └── api-0.0.1-SNAPSHOT.jar
        │   ├── reports
        │   │   └── tests
        │   │       └── test
        │   │           ├── classes
        │   │           │   └── com.example.api.ApiApplicationTests.html
        │   │           ├── css
        │   │           │   ├── base-style.css
        │   │           │   └── style.css
        │   │           ├── index.html
        │   │           ├── js
        │   │           │   └── report.js
        │   │           └── packages
        │   │               └── com.example.api.html
        │   ├── resources
        │   │   └── main
        │   │       ├── application.properties
        │   │       ├── static
        │   │       └── templates
        │   ├── test-results
        │   │   └── test
        │   │       ├── TEST-com.example.api.ApiApplicationTests.xml
        │   │       └── binary
        │   │           ├── output.bin
        │   │           ├── output.bin.idx
        │   │           └── results.bin
        │   └── tmp
        │       ├── bootJar
        │       │   └── MANIFEST.MF
        │       ├── compileJava
        │       └── compileTestJava
        ├── build.gradle
        ├── gradle
        │   └── wrapper
        │       ├── gradle-wrapper.jar
        │       └── gradle-wrapper.properties
        ├── gradlew
        ├── gradlew.bat
        ├── settings.gradle
        └── src
            ├── main
            │   ├── java
            │   │   └── com
            │   │       └── example
            │   │           └── api
            │   │               └── ApiApplication.java
            │   └── resources
            │       ├── application.properties
            │       ├── static
            │       └── templates
            └── test
                └── java
                    └── com
                        └── example
                            └── api
                                └── ApiApplicationTests.java
    
    

    절차



    1. docker-compose.yml 만들기



    이번에는 java 컨테이너 하나만의 간단한 구성입니다.

    docker-compose.yml
    version: '3.6'
    services:
      java:
        image: openjdk:14-slim
        ports:
          - 8080:8080
        tty: true
        volumes:
          - ./server:/srv:cached
        working_dir: /srv
    

    2. Gradle 프로젝트 생성



    2.1 spring initializr에서 Gradle 프로젝트의 병아리 만들기


    2.2 Gradle 프로젝트의 병아리 다운로드


    2.3 프로젝트에 배포
    프로젝트 디렉터리 바로 아래에 server 디렉터리를 만듭니다.
    2.2에서 다운로드한 api.zip를 확장하고 내용을 server 바로 아래로 옮깁니다.

    3. 애플리케이션 파일 편집


    server/src/main/java/com/example/api/ApiApplication.java를 다음과 같이 편집합니다.

    server/src/main/java/com/example/api/ApiApplication.java
    package com.example.api;
    
    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 ApiApplication {
    
        @RequestMapping("/")
        public String home() {
            return "Hello World";
        }
    
        public static void main(String[] args) {
            SpringApplication.run(ApiApplication.class, args);
        }
    
    }
    
    

    4. Docker 시작


    // docker環境ビルド
    % docker-compose build
    
    // dockerをバックグラウンドで起動
    % docker-compose up -d
    

    5. Gradle 빌드


    // javaコンテナにインスペクション
    % docker-compose exec java bash
    
    // gradleビルド
    root@62acca270468:/srv# sh gradlew build
    ...
    BUILD SUCCESSFUL in 1m 38s
    5 actionable tasks: 3 executed, 2 up-to-date
    
    server 바로 아래에 build 디렉토리가 있는지 확인하십시오.

    6. 애플리케이션 실행


    root@62acca270468:/srv# java -jar build/libs/api-0.0.1-SNAPSHOT.jar
    

    7. 동작 확인



    http://localhost-8080.com/로 이동합니다.Hello World가 표시되면 성공입니다.

    참고


  • Docker+Spring-boot 시작하기
  • Docker로 시작하는 Spring Boot
  • 좋은 웹페이지 즐겨찾기