도커파일(Dockerfile)이란?

Dockerfile은 도커 이미지를 생성하기 위한 스크립트 파일이다. Dockerfile을 작성하면 특정 애플리케이션이나 환경을 이미지로 만들 수 있다. 이 이미지를 사용하면 컨테이너를 실행하고, 배포 과정에서 동일한 환경을 재현할 수 있다.
Dockerfile의 주요 특징
- 이미지 생성:
- Dockerfile을 사용하면 자신만의 도커 이미지를 만들어 DockerHub에 배포하거나 로컬에서 사용할 수 있다.
- 예를 들어, Spring Boot 프로젝트나 Node.js 애플리케이션을 컨테이너화할 수 있다.
- 환경 정의:
- 애플리케이션이 실행되는 데 필요한 모든 설정, 패키지, 라이브러리 등을 정의할 수 있다.
- 이를 통해 애플리케이션 환경을 일관되게 유지할 수 있다.
- 재현 가능성:
- 팀원 또는 다른 환경에서 Dockerfile을 사용하면 동일한 이미지를 생성하고 실행할 수 있다.
Dockerfile 작성 방법
1. FROM: 베이스 이미지 설정
- Dockerfile은 항상 FROM 명령어로 시작한다.
- FROM은 이미지를 생성할 때 사용할 베이스 이미지를 지정한다.
- 베이스 이미지란, 도커 컨테이너가 시작될 때 기본적으로 갖출 환경을 제공하는 이미지이다.
사용법:
FROM [이미지명]
예제: JDK 17을 베이스로 설정
FROM openjdk:17-jdk
2. 이미지 생성 명령어
Dockerfile을 작성한 후, 터미널에서 아래 명령어로 이미지를 생성할 수 있다.
docker build -t [이미지명] [Dockerfile 경로]
예제: openjdk:17-jdk를 기반으로 이미지를 생성:
docker build -t my-java-app .
이미지 생성 과정
1. Dockerfile 작성
Dockerfile에 작성
# 베이스 이미지로 JDK 17 사용
FROM openjdk:17-jdk
# 애플리케이션 실행을 위한 작업 디렉토리 설정
WORKDIR /app
# 로컬 파일을 컨테이너 내부로 복사
COPY . /app
# 실행 명령어 설정
CMD ["java", "-jar", "my-app.jar"]
2. 이미지 생성
Dockerfile이 있는 디렉토리에서 실행
docker build -t my-java-app .
정리
- Dockerfile은 도커 이미지를 만드는 데 필요한 설정을 담은 파일이다.
- FROM은 베이스 이미지를 지정하여 JDK, Node.js 등 원하는 환경을 기반으로 설정할 수 있다.
- Dockerfile을 작성한 후 docker build 명령어로 이미지를 생성하면, 컨테이너에서 실행할 수 있는 환경이 만들어진다.
Docker로 SpringBoot 실행하기
1. Build하여 Jar 생성하기
./gradlew clean build
(터미널에서 실행 이후 .jar 파일 확인)

2. Dockerfile 작성하기
(.jar 경로를 컨테이너 내의 "app.jar"에 복사)
FROM openjdk:17-jdk
COPY build/libs/*SNAPSHOT.jar app.jar
ENTRYPOINT ["java", "-jar", "/app.jar"]
(1) 도커 이미지 생성
docker build -t springboot .
(2) 생성된 이미지 확인
docker image ls
(3) 해당 컨테이너 실행
docker run -d -p 8080:8080 springboot