본문 바로가기
Docker

[Docker] Dockerfile 작성 및 빌드하기

by 산코디 2023. 7. 17.

[Docker] Dockerfile 작성 및 빌드하기

안녕하세요!

 

오늘은 Dockerfile을 이용해서 docker 이미지를 빌드하는 방법에 대해 포스팅하려고 합니다.

 

Docker는 일반적으로 Docker Hub에서 이미지를 가져와 컨테이너로 실행하는 경우가 많습니다. 그러나 종종 상황에 따라 개발한 애플리케이션이나 시스템을 이미지로 빌드하거나, Docker Hub에서 가져온 이미지를 커스터마이징하여 다시 빌드해야 하는 상황이 발생하기도 합니다. 이럴 때 Dockerfile을 사용하여 이미지를 만들 수 있습니다.

 

Dockerfile은 Docker에서 첫 번째로 시작되는 이미지를 생성하기 위한 설정 파일입니다. 이 파일은 이미지를 빌드하기 위한 텍스트 파일이며, 이미지를 구성하는 명령들의 순서와 설정을 정의하는 데 사용됩니다.

 

Dockerfile을 작성하면 Docker가 이 파일을 기반으로 이미지를 빌드하고 필요한 구성 요소를 포함시킵니다. Dockerfile을 사용하면 이미지 빌드를 자동화하고 일관성을 유지할 수 있으며, 버전 관리 시스템과 통합하여 효율적인 애플리케이션 개발 및 배포 프로세스를 구축할 수 있습니다.

 

그럼 이제 Dockerfile을 작성하여 이미지를 빌드하는 방법을 자세히 알아보도록 하겠습니다.

 


* Dockerfile 명령어

먼저 Dockerfile을 만들기 위해서는 몇 가지 명령들을 알아야 합니다. 

 

  - FROM : 만들고자 하는 이미지에서 참조할 베이스 이미지를 정의합니다.

 

  - WORKDIR : 작업 디렉터리를 설정합니다.

 

  - COPY / ADD : 로컬 환경에서 파일을 이미지로 복사합니다.

 

  - RUN : Shell 명령어를 실행합니다.

 

  - EXPOSE : 컨테이너가 노출할 포트를 설정합니다.

 

  - CMD / ENTRYPOINT : 컨테이너가 시작될 때 실행할 명령을 정의합니다.


1. Spring boot를 이용한 Dockerfile

Spring boot를 이용한 Dockerfile

spring boot에서 root 디렉터리에 Dockerfile을 추가해 줬습니다. Dockerfile은 root 디렉터리에 생성해줘야 합니다.


2 Dockerfile

# open jdk version 8
FROM openjdk:8-jre-alpine

# 작업 디렉토리 설정
RUN mkdir /app

# 빌드 파일 복사
COPY target/dockersystem-0.0.1.war /app/dockersystem.war

# springboot war 실행
ENTRYPOINT exec java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app/dockersystem.war

위의 Dockerfile은 실제 spring boot를 이미지로 빌드하기 위한 명령들이며, 하나씩 차근차근 보도록 하겠습니다.

 

- FROM openjdk:8-jre-alpine

   Spring Boot를 실행하기 위해 가장 먼저 openJDK를 베이스 이미지로 설정하였습니다.

- RUN mkdir /app

   작업 디렉토리를 '/app'로 설정하였습니다.

- COPY target/dockersystem-0.0.1.war /app/dockersystem.war

   빌드된 target 하위의 war 파일을 이미지 내의 작업 디렉터리 '/app' 하위로 복사를 합니다.

- ENTRYPOINT exec java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app/dockersystem.war

   이미지 내의 작업 디렉토리에 빌드된 war파일을 실행할 수 있도록 설정합니다.

 

* 여기서 주의할 점은 베이스 이미지로 설정하기 위한 FROM 명령어를 가장 먼저 설정해 주는 것이 좋습니다. 

 


3. Docker 이미지 빌드

springboot 하위의 dockerfile 경로로 위치 이동

Dockerfile을 이용하여 이미지를 빌드하기 위해 터미널(mac)이나 커맨드(windows)를 통해서 Dockerfile이 위치한 디렉터리로 이동합니다.

그리고 다음 명령어를 실행합니다.

 


* 명령어

docker build -t dockersystem:1.0 .

위의 명령어는 Dockerfile의 명령어를 기준으로 이미지를 빌드하는 명령어입니다.

 

`docker build`

    Docker 이미지를 빌드하는 명령어입니다.

 

`-t dockersystem:1.0`

    '-t' 옵션은 이미지에 태그를 지정하는 옵셥입니다. 'dockersystem'은 이미지의 이름을, '1.0'은 이미지의 버전 또는 태그를 나타냅니다.

    여기서 'dockersystem'은 이미지의 이름을 자유롭게 선택할 수 있고, '1.0'은 버전 또는 태그를 나타내며 원하는 값으로 대체할 수 있습니다.

 

`.`

    현재 디렉토리를 빌드 콘텍스트로 사용하는 것을 나타냅니다. Dockerfile과 다른 빌드 관련 파일들이 현재 디렉터리에 위치해야 합니다. 

 

위의 명령어를 실행하면 Docker는 현재 디렉토리에 있는 Dockerfile을 사용하여 Docker 이미지를 빌드합니다. 빌드된 이미지는 'dockersystem'이라는 이름과 '1.0'이라는 태그가 붙은 이미지로 생성합니다.

 

* docker build 실행 결과 화면

docker build -t 이미지명:태그 . 실행 결과 화면

명령어를 실행하게 되면 위와 같이 빌드가 되는 것을 확인할 수 있습니다.

 


4. Docker 이미지 확인

빌드를 통해 이미지를 생성했다면 이미지가 정상적으로 만들어졌는지 확인을 해야 합니다. 현재 Docker를 사용하는 장비에서 이미지의 목록을 확인하기 위한 명령어를 확인해 보도록 하겠습니다.

 

* 명령어

docker images

위의 명령을 실행하면 이미지 목록이 출력됩니다. 조회된 결과는 각 이미지의 리포지토리 명, 태그, 이미지 ID, 생성일 및 이미지 크기 등의 정보가 표시됩니다. 이를 통해 이미지가 정상적으로 빌드되었는지, 이미지 이름과 태그가 올바른지, 이미지의 크기 등을 확인할 수 있습니다.

 

* 이미지 조회 결과 화면

`docker images` 명령어 조회 결과 화면

 

정상적으로 빌드된 이미지는 출력 목록에 나타날 것이며, 해당 이미지를 이용하여 컨테이너를 생성하거나 배포할 수 있습니다.

 

여기까지 Dockerfile을 통해 이미지를 빌드하고 확인하는 과정을 거치면 간단하게 이미지를 만들 수 있습니다.

 


최종 정리

 

오늘은 Docker에서 Dockerfile을 통해 Spring Boot를 이미지 빌드를 시키는 과정을 정리해 봤습니다. 처음에는 Docker 이미지 빌드가 어려워 보일 수 있지만, 실제로 직접 한 번 시도해 보면 간단하다는 것을 느낄 수 있습니다. 

 

Docker를 공부하면 주로 Docker Hub에서 제공되는 이미지들을 가져와 컨테이너를 실행하는 방식으로 학습을 시작하곤 합니다. 하지만  Dockerfile을 직접 사용하고 공부하며 이미지를 만들어보는 것은 정말 좋은 경험이 될 것입니다. 이를 통해 이미지가 어떻게 생성되는지, 컨테이너에 필요한 설정과 종속성을 어떻게 정의하는지에 대해 더 깊이 이해할 수 있을 것입니다.

 

이번에 포스팅한 내용에 이어 다음 포스팅에서는 빌드한 이미지를 통해서 컨테이너를 띄우는 방법과 기술을 정리하여 보도록 하겠습니다.

Docker를 통해 애플리케이션을 배포하고 관리하는 경험은 개발자로서 매우 유용하며 생산성을 크게 향상할 수 있습니다.

 

그럼 오늘도 저의 글을 읽어주셔서 감사합니다.

 

 

반응형

 

반응형

'Docker' 카테고리의 다른 글

[Docker] 도커 PostgreSQL 설치하기  (0) 2023.07.19
[Docker] 도커 컨테이너 생성 및 실행하기  (0) 2023.07.18
[Docker] 도커 MySQL 설치하기  (0) 2023.07.13