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