
프로젝트 최상단에 확장자 없이 'Dockerfile'이라는 이름의 파일을 만들어준다.
제대로 만들어졌다면 고래모양 아이콘이 생겨야한다.
이제 Dockerfile 파일 내 코드를 작성해준다.
FROM openjdk:21-jdk
이것은, Docker 이미지를 만들 때, 베이스로 사용할 이미지를 지정하는것이다. FROM 키워드를 사용한다.
Dockerfile에서 반드시 첫 번째 명령어로 사용된다.
Spring boot 웹 애플리케이션은 JVM(Java Virtual Machine) 위에서 동작하기 때문에, Docker로 컨테이너화할 때 Java 환경이 필수적이다.
ARG JAR_FILE=target/*.jar
이것은, ARG(Argument, 인자) 즉, 변수를 지정한다고 보면 된다.
JAR_FILE이라는 변수를 선언해서 Spring Boot 웹 애플리케이션이 빌드된 실행파일(.jar)파일이 존재하는 경로를 담아준다.
COPY ${JAR_FILE} app.jar
이것은 말 그대로 복사를 하는것인데, ${JAR_FILE}은 방금 지정한 변수가 갖고있는 값인 target/*.jar를 의미한다.
즉, target 디렉터리에 있는 실행파일(.jar)파일을 Docker 컨테이너 내부의 최상단에 app.jar 라는 이름으로 복사하겠다는 의미이다.
만약 특정 디렉터리로 복사하고 싶다면, COPY ${JAR_FILE} /app/app.jar 이런식으로 명확하게 경로를 지정해주면 된다.
ENTRYPOINT ["java", "-jar", "/app.jar"]
이것은, Docker 컨테이너가 시작될 때 항상 실행할 명령어를 지정하는 것이다.
실행파일(.jar)을 실행하는 명령어 "java -jar /app.jar" 인데, Spring Boot 애플리케이션처럼 컨테이너를 실행할 때 추가 인자나 옵션을 명확하게 전달하기 위해서는, 반드시 Exec 형식으로 사용하는 것이 표준이자 모범사례라고 한다.
그래서 Docker는 명령어(java)와 옵션(-jar), 그리고 대상파일(/app.jar)을 정확히 구분하여 실행해야 한다.
그렇기 때문에 저런식으로 명령어와 인자, 대상파일이 분리된 코드 형식을 나타내는것이다.
코드 작성을 마쳤다면 아래 명령어를 터미널에 입력하여 Docker 이미지 빌드를 진행한다.
| docker build -t my-spring-app:v1 . |

빌드가 완료되었다. 그 다음 docker desktop을 실행시켜서 확인해보면?

이미지가 잘 생성된것을 확인할 수 있다.
아래와 같이 명령어를 통해 터미널에서도 확인 가능
| docker images |

마지막으로 Docker 이미지를 실행하는 명령어를 입력해준다.
| docker run -p 8080:8080 my-spring-app:v1 |
docker run: Docker 이미지를 컨테이너로 실행하는 명령어
-p 8080:8080: 포트 매핑을 설정하는 옵션. 왼쪽은 호스트(로컬PC)의 포트, 오른쪽은 컨테이너 포트. 즉, 클라이언트가 호스트의 포트로 접근하면 컨테이너로 접근할수 있도록 해주는 매핑 작업

아직은 환경변수 등의 문제로 인해 배포가 안되는 상태이다.
다음 포스트에는 'docker-compose'를 활용하여 컨테이너 실행 시 입력해야 하는 복잡한 옵션이나 환경변수를 설정하는 방법을 실습해보겠다.
'실습 > Docker' 카테고리의 다른 글
| 실습4. NHN Container Registry에 이미지 빌드 및 업로드 (0) | 2025.06.26 |
|---|---|
| 실습3. docker-compose.yml (0) | 2025.06.26 |
| 실습1. Docker 설치(Windows) (0) | 2025.06.26 |