Dockerfile Command
Command | Description | Example |
FROM image/scratch | 빌드하는 베이스 이미지 | FROM ubuntu:latest |
LABEL name=”text” | 메타데이터 추가 | LABEL email=”abce@gmail.com” LABEL name=”Kang” |
COPY path dst | 로컬 경로의 파일(path)을 container 내부 경로(dst)로 복사 | COPY app.js /usr/src/app/app.js |
ADD src dst | COPY와 동일하지만 untar를 적용하고 http 경로 허용 | ADD https://example.com/file.tar.gz /usr/src/ |
RUN args.. | 컨테이너 내부에서 임의로 실행하는 명령어 | RUN apt-get update && apt-get install -y curl |
USER name | 기본 username 설정 | USER appuser |
WORKDIR path | 후속 명령어를 실행할 working directory 설정 | WORKDIR /usr/src/app |
CMD args | 컨테이너가 실행될 때 수행할 명령어 * 만약 docker run시 command 입력하면 기존의 명령어는 입력된 명령어로 대체된다. |
CMD [”npm”, “start”] |
ENTRYPOINT args | Configures a container to run as an executable * container 실행 시 무조건 실행되는 명령어. |
ENTRYPOINT [”python”, “app.py”] |
ARG name value | docker build 명령어에서 빌드타임에 사용할 변수명 정의 | ARG VERSION=1.0 |
ENV name value | 컨테이너 내부에서 사용할 환경변수 설정 | ENV NODE_ENV=production |
EXPOSE | 런타임 시 개방할 포트 번호 | EXPOSE 80/tcp |
HEALTHCHECK | docker container 상태 확인(테스트) 할지 설정한다. 예시) 5분마다 가동중인 웹서버의 메인페이지를 3초안에 표시할 수 있는지 확인하는 명령어 → |
HEALTHCHECK --interval=5m --timeout=3s CMD curl -f http://localhost/ || exit 1 |
Dockerfile 작성 예시
FROM openjdk:17-jdk
ARG jar_file=spring_app-1.0.jar
COPY ${jar_file} application.jar
EXPOSE 9009
ENTRYPOINT ["java", "-jar", "application.jar"]
위는 spring boot로 개발한 백엔드 어플리케이션을 위한 docker image를 빌드하는 dockerfile 예시이다.
먼저 spring application이 실행될 수 있도록 base image를 적어주어야 한다. (FROM openjdk:17-jdk)
그 후 build한 jar file 경로를 ARG로 설정한 후 컨테이너 내부에 application.jar라는 이름으로 COPY를 한다.
이후 컨테이너 내부에서 사용할 포트를 개방한 뒤(EXPOSE 9009) 컨테이너가 실행될 때 자동으로 spring application이 실행되도록 entrypoint를 설정하면 된다.
'인프라' 카테고리의 다른 글
개발자 쿠버네티스 개발/테스트 환경 구축하기 (0) | 2025.03.07 |
---|---|
쿠버네티스에서의 컨테이너, 가상화 기술 정리 (0) | 2025.03.04 |
Prometheus+Grafana로 Triton Inference Server 모니터링 하기 (0) | 2024.12.03 |
쿠버네티스에서 Prometheus+Grafana 모니터링 시스템 구축하기 (0) | 2024.12.03 |
[Kubernetes] Helm과 Kustomize 비교 (0) | 2024.10.07 |