Docker로 Spring Boot 환경 구축(2021년 1월판)

Spring Boot를 만지는 환경을 갑자기 준비할 필요가 있었으므로, 작성했을 때의 순서나 약간의 사고사 정리.

0. 참고 기사



Docker × Spring Boot 환경 구축
htps : // 코 m / 아 키라 / ms / 베아 f79 아 0d39d9839 61

거의 이대로 실행하려고 하고, 시간 경과에 의한 변경치가 있었으므로, 그 주위를 써준 정도의 제등 기사입니다. 병렬로 읽는 것이 좋다고 생각합니다.

1.필자 환경


  • Windows 10 Professional(20h4)
  • VSCode
  • Git Bash
  • Docker Desktop

  • 이 근처의 상세에 대해서는 생략합니다 (원 기사는 Mac이었습니다만 아무 문제 없겠지요)

    2. 자력으로 작성하는 파일을 작성



    자동 생성되는 파일이 많기 때문에 원본 기사를 접고 수동으로 편집하는 파일만 다룹니다.

    docker-compose.yml



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

    먼저 빨리 쓰면 원래 기사와의 차이는
    - version을 3.6→3.8(여기는 거의 영향 없음)
    - image 버전 14→15 (중요)

    나중에 설명하지만 initializr 버전이 14에서 15로 변경되었으므로 여기를 원래 기사로 유지하면 gradle이 이끼입니다.

    일단 필자 개인으로서는, dockerhub에 "openjdk:15-slim"이 있는 것을 확인하고의 기재를 했어요라고 하는, 망설임(격게 문맥)으로 재작성한 것은 아니라는 죄송 정도의 팔로우를 넣어 유지합니다.
    htps : // 후 b. 도 c r. 코 m/r/아 md64/오펜 jdk/

    Gradle 프로젝트 파일



    이전 기사와 마찬가지로 spring initializr 에서 만들고 [프로젝트 디렉토리]/server 아래에 확장합니다.

    다만, 버전 주위가 당시와 바뀌고 있으므로, 그 차이만.

  • (먼저 쓰고 있습니다만) Java의 선택지에 14가 없고, 최신은 15가 되어 있다
  • Spring Boot 선택에 2.3.1이 없습니다 (이 절차에서는 2.4.1 선택)

  • Dependencies에 대해서는, 전 기사와 같이 "Spring Web"와 "Lombok"를 선택했습니다.

    프로젝트를 시험 운영하기 위한 변경



    전 기사와 같습니다만 일단. server/src/main/java/com/example/api/ApiApplication.java 를 다음과 같이 편집.

    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);
        }
    
    }
    
    

    3.Docker 시작



    똑같습니다.

    명령 줄에서 Docker 환경을 빌드하고

    %docker-compose build

    백그라운드에서 Docker 시작

    %docker-compose up -d

    4. Gradle 빌드



    여기도 똑같습니다.

    Java 컨테이너 내에 들어간다 ※사람에 의해서 winpty는 필요하거나 필요 없거나

    % winpty docker-compose exec java bash

    gradle 빌드(root@ 이후는 각 사람 다릅니다.일단)

    root@558036f3cbd0:/srv# sh gradlew build

    아까도 썼습니다만, 컨테이너의 Java를 15로 해 두지 않으면, 다음과 같이 Failure라든지 말해지는 날개가 됩니다(1패).
    FAILURE: Build failed with an exception.
    
    * What went wrong:
    Execution failed for task ':compileJava'.
    > Could not target platform: 'Java SE 15' using tool chain: 'JDK 14 (14)'.
    
    * Try:
    Run with --stacktrace option to get the stack trace. Run with --info or --debug
    option to get more log output. Run with --scan to get full insights.
    
    * Get more help at https://help.gradle.org
    
    BUILD FAILED in 53s
    1 actionable task: 1 executed
    
    

    5. 실행 및 동작 확인



    여기도 똑같이

    root@558036f3cbd0:/srv# java -jar build/libs/api-0.0.1-SNAPSHOT.jar

    localhost:8080 에 액세스하면, 방금 쓴 home()이 실행되어 "Hello World"가 표시되고 있을 것입니다.

    99. 감상



    이 기사가 세상적으로 필요한지 여부는 제쳐두고, 이번 정도의 버전 차이는 몇 번 이끼면서 자력으로 빨리 해결할 수 있을 정도가 적당한 엔지니어력이라고 생각합니다(코나미칸

    하지만 예상대로 이끼라든가, 이끼가 될 것이라고 예상하면서 미수정인 채로 돌진해 기대대로의 결과를 얻는다는 것도 개인적으로는 중요하다고 생각하기 때문에, 미래에 이와 같은 사태를 밟은 사람은 똑같이 시도하면 좋다고 생각합니다.

    좋은 웹페이지 즐겨찾기