⚙️ Devops/🐳 Docker

[Docker] Spring boot 프로젝트를 도커 이미지화 해보기

2022. 7. 5. 15:59
목차
  1. 간단한 spring boot 프로젝트 생성
  2. HomeController
  3. application.yml
  4. jar 파일 생성하기
  5. Dockerfile 생성
  6. docker image 생성
  7. docker scan 에러
  8. 실행해보기
반응형

Spring boot 프로젝트를 docker image로 만들어 보겠습니다.

간단한 spring boot 프로젝트 생성

HomeController


import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HomeController {

    @GetMapping("/hello")
    public String hello(@Value("${test.customName}") String name) {
        return "hello, " + name + "!";
    }
}

application.yml

test:
    customName: ${CUSTOM_NAME}
  • "/hello"로 요청이 들어오면 application.yml에 미리 정의한 test.customName을 함께 출력하는 메소드입니다.

jar 파일 생성하기

Gradle -> build -> bootJar를 실행하면 build/libs/**.jar 가 생성됩니다.

Dockerfile 생성

docker image를 만들기 위해서는 Dockerfile이라는 파일에 어떤 base 이미지를 사용해서 만들지.. 등등을 명시 해줘야합니다.

  • 프로젝트 최 상단 디렉토리에 Dockerfile 생성
#!/bin/bash

# base 이미지 설정
FROM openjdk:8-jre-alpine

# jar 파일 위치를 변수로 설정
ARG JAR_FILE=build/*.jar

# 환경변수 설정
ENV CUSTOM_NAME default

# jar 파일을 컨테이너 내부에 복사
COPY ${JAR_FILE} test-app.jar

# 외부 호스트 8080 포트로 노출
EXPOSE 8080

# 실행 명령어
CMD ["java", "-Dtest.customName=${CUSTOM_NAME}", "-jar", "test-app.jar"]

docker image 생성

위에서 만든 Dockerfile을 기반으로 docker image를 생성해보도록 하겠습니다.

  • docker build
$ docker build -t {name}/{image} .

만약 Docker hub에 이미지를 업로드 하고 싶다면 name을 docker id와 동일하게 설정해야 합니다.

docker scan 에러

도커 이미지를 생성하는 도중 docker scan을 실행하라는 메세지가 떴습니다.

해결 방법을 찾아보니 alpine 이미지를 scan해주면 해결된다고 합니다.

  • docker scan
$ docker scan alpine

  • 다시 docker build
$ docker build -t {name}/{image} .
  • 이미지 조회
$ docker images

정상적으로 잘 생성된 것을 확인할 수 있습니다!

실행해보기

$ docker run --it -e CUSTOM_NAME=iseunghan --name test-docker -p 8080:8080 {name}/{image}

  • Docker 실행 시 넘겨줬던 환경변수가 잘 전달되어 출력된 것을 확인할 수 있습니다.
반응형
  1. 간단한 spring boot 프로젝트 생성
  2. HomeController
  3. application.yml
  4. jar 파일 생성하기
  5. Dockerfile 생성
  6. docker image 생성
  7. docker scan 에러
  8. 실행해보기
'⚙️ Devops/🐳 Docker' 카테고리의 다른 글
  • Docker Permission Denied 해결방법
  • 도커 이미지 빌드시 플랫폼 변경하기 (feat. M1 Mac)
  • [Docker] MySQL 설치하기
  • Docker, Docker-Compose 설치하기 - Ubuntu 20.04 LTS
iseunghan
iseunghan
꾸준하게 열심히..
iseunghan
iseunghan

공지사항

  • 어제보다 나은 오늘이 되기 위해 🔥
  • 분류 전체보기 (262)
    • 💐 Spring (14)
      • 개념 및 이해 (2)
      • Spring 핵심 기술 (24)
      • Spring REST API (8)
      • Spring MVC, DB 접근 기술 (7)
      • Spring Security (23)
      • Spring in Action (1)
    • 🌻 JAVA (84)
      • 자바 ORM 표준 JPA 프로그래밍 (20)
      • 알고리즘, 자료구조 (13)
      • 디자인 패턴 (7)
      • 정리정리정리 (43)
      • JUnit (1)
    • 🔖 Snippets (3)
      • Javascript (3)
    • ⚙️ Devops (22)
      • ⛏ Git (11)
      • 🐳 Docker (6)
      • 🐧 Linux (3)
      • 🌈 Jenkins (1)
      • 📬 Kafka (1)
    • 💬 ETC.. (4)
      • 💻 macOS (2)
    • 🌧️ ORM (2)
      • JPA (2)
    • 🐍 Python (3)
    • 📚 Databases (15)
      • 오라클로 배우는 데이터베이스 개론과 실습(2판) (3)
      • RealMySQL 8.0 (8)
    • 🔥 Computer Science (5)
      • 📡 네트워크 (5)
    • 🏷️ 협업 (1)
    • 📜 코딩테스트 (38)
      • BAEKJOON\수학 1, 수학 2 (8)
      • BAEKJOON\재귀 (5)
      • BAEKJOON\브루트 포스 (3)
      • BAEKJOON\정렬 (1)
      • BAEKJOON\백트래킹 (5)
      • BAEKJOON\BFS, DFS (6)
      • BAEKJOON\이분탐색 (1)
      • BAEKJOON\다이나믹 프로그래밍 (9)
      • BAEKJOON\그리디 알고리즘 (0)
    • ✨ ISEUNGHAN (1)

인기 글

전체
오늘
어제
반응형
hELLO · Designed By 정상우.
iseunghan
[Docker] Spring boot 프로젝트를 도커 이미지화 해보기
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.