카테고리 없음

[Docker] Dockerfile 작성 방법

IT-PAPA 2023. 4. 19. 06:49
728x90
반응형

Docker는 컨테이너화된 애플리케이션을 구동하기 위한 플랫폼으로, Docker 이미지를 사용하여 애플리케이션을 독립적으로 실행할 수 있습니다. Dockerfile은 Docker 이미지를 빌드하기 위한 설정 파일로, Docker 이미지를 생성하는 데 사용됩니다. 다음은 Dockerfile을 작성하는 방법에 대한 예시입니다.

명령어 설명
FROM 사용할 베이스 이미지를 지정합니다.
MAINTAINER 이미지를 유지, 관리하는 개발자의 정보를 기록합니다. (deprecated)
LABEL 이미지에 메타데이터를 추가합니다.
RUN 새로운 레이어에서 명령어를 실행하고 그 결과를 적용합니다.
CMD 컨테이너가 실행될 때 실행될 명령어를 지정합니다. (단, 컨테이너 실행 시에 명령어를 덮어쓰기 가능)
ENTRYPOINT 컨테이너가 실행될 때 실행될 명령어를 지정합니다. (단, 컨테이너 실행 시에도 명령어를 덮어쓰기 불가)
EXPOSE 컨테이너가 노출할 포트 번호와 프로토콜을 지정합니다.
ENV 환경 변수를 설정합니다.
ADD 로컬 파일이나 디렉토리를 이미지에 추가합니다.
COPY 로컬 파일이나 디렉토리를 이미지에 복사합니다.
VOLUME 호스트와 컨테이너 간에 데이터를 공유하기 위한 디렉토리를 지정합니다.
WORKDIR 작업 디렉토리를 설정합니다.
USER 컨테이너를 실행할 사용자 계정을 지정합니다.
ARG 빌드 타임에 전달되는 인자 값을 지정합니다.
ONBUILD 현재 레이어에서 수행할 명령어를 지정하고, 다음 레이어에서 실행될 명령어를 설정합니다.
STOPSIGNAL 컨테이너가 중지될 때 사용할 시그널을 지정합니다.
HEALTHCHECK 컨테이너의 건강 상태를 확인하는 방법을 지정합니다.

 

1. 새로운 디렉토리를 생성하고 해당 디렉토리로 이동합니다.

mkdir my-docker-app cd my-docker-app

 

2. 텍스트 에디터(예: vi, nano, 등)를 사용하여 Dockerfile을 작성합니다.

# Docker 이미지의 기반이 될 베이스 이미지를 선택합니다.
# 예: OpenJDK 11을 사용하는 경우
FROM openjdk:11

# 작성자 정보를 추가합니다.
MAINTAINER Your Name <your.email@example.com>

# 작업 디렉토리를 설정합니다.
WORKDIR /app

# 로컬 파일을 Docker 이미지로 복사합니다.
COPY . /app

# 필요한 의존성 패키지를 설치합니다.
# 예: Maven을 사용하는 경우
RUN apt-get update && apt-get install -y maven

# 애플리케이션을 빌드합니다.
# 예: Maven을 사용하는 경우
RUN mvn clean install

# 포트 설정 (선택적)
EXPOSE 8080

# 애플리케이션을 실행합니다.
CMD ["java", "-jar", "target/my-docker-app.jar"]

위의 예시는 OpenJDK 11을 베이스 이미지로 사용하고, 작업 디렉토리를 /app으로 설정하며, 현재 디렉토리의 파일들을 Docker 이미지의 /app 디렉토리로 복사합니다. 그리고 Maven을 사용하여 애플리케이션을 빌드하고, 최종적으로 java -jar 명령을 통해 애플리케이션을 실행합니다.

3. Docker 이미지를 빌드합니다.

docker build -t my-docker-app .

위의 명령을 통해 Docker 이미지를 빌드하고, my-docker-app이라는 이미지 이름을 부여합니다. 마지막의 .는 현재 디렉토리를 의미합니다.

 

4. Docker 컨테이너를 실행합니다.

docker run -p 8080:8080 my-docker-app

위의 명령을 통해 my-docker-app 이미지를 기반으로 Docker 컨테이너를 실행하고, 호스트의 8080 포트와 컨테이너의 8080 포트를 매핑하여 애플리케이션에 접속할 수 있게 합니다.

728x90
반응형
LIST