[Docker] WORKDIR, 엔트리포인트(Entrypoint)

류재성's avatar
Jul 19, 2024
[Docker] WORKDIR, 엔트리포인트(Entrypoint)
 

1. WORKDIR 이란?

 
💡
WORKDIR 명령어는 컨테이너 내부에서 작업 디렉토리를 설정하는 데 사용된다. Dockerfile에서 WORKDIR 를 설정하면, 그 이후의 모든 명령어(COPY, ADD, RUN, CMD 등)는 설정된 작업 디렉토리에서 실행된다.
 

2. 기본 설정

 
ex02/Dockerfile
notion image
# opnjdk 11 이미지를 가지고 온다 FROM openjdk:11-jdk-slim # 터미널이 실행되는 위치를 설정한다. WORKDIR /var/currunt/app # ./가 되는건 workdir 설정을 해서 COPY ./deploy/aws-v3-0.0.3.jar . /application.jar
 
notion image
 
Dockerfile이 있는 ex02 폴더로 이동한다.
 
docker build -t 컨테이너명 .
notion image
 
이미지를 생성한다.
 
notion image
 
컨테이너를 실행한다.
 
notion image
 
컨테이너를 실행 후 터미널에 접속하면 WORKDIR 에 설정한 경로가 나타난다.
 

3. 엔트리포인트(Entrypoint)란?

💡
Docker 엔트리포인트(Entrypoint)는 Docker 컨테이너가 시작될 때 실행되는 명령을 지정하는 방법이다. 엔트리포인트는 Dockerfile에서 설정하며, 컨테이너가 시작될 때 기본적으로 실행될 명령어를 정의한다. 엔트리포인트는 주로 컨테이너가 특정 방식으로 동작하도록 강제할 때 사용된다.
 

4. Dockerfile 설정

 
ex02/Dockerfile
# opnjdk 11 이미지를 가지고 온다 FROM openjdk:11-jdk-slim # 터미널이 실행되는 위치를 설정한다. WORKDIR /var/currunt/app # ./가 되는건 workdir 설정을 해서 COPY ./deploy/aws-v3-0.0.3.jar ./application.jar # 상수. 변경이 안됨. ENTRYPOINT ["java", "-jar", "./application.jar"] # 바꿀 수 있는 옵션, 변수 CMD ["--server.port=3000"]
notion image
 

엔트리포인트와 CMD의 차이점

  • ENTRYPOINT:
    • 컨테이너가 시작될 때 반드시 실행되어야 하는 명령을 정의한다.
    • 컨테이너를 실행할 때 다른 명령을 제공해도 엔트리포인트 명령은 항상 실행된다.
  • CMD:
    • 컨테이너가 실행될 때 기본적으로 실행할 명령을 정의하지만, 컨테이너를 실행할 때 다른 명령을 제공하면 그 명령이 우선적으로 실행된다.
 

5. .jar 파일

 
ex02/deploy/aws-v3-0.0.3.jar
notion image
 
.jar 파일을 deploy 폴더에 넣는다.
 
notion image
 
Dockerfile 에 설정해둔다.
notion image
notion image
.jar 파일은 prod 모드로 실행되며 5000 포트를 사용한다.
 
💡
.jar 파일의 포트는 5000이지만 CMD에서 3000 포트로 변경되었다.

6. .jar 파일 실행하기

 
notion image
 
새로운 이미지 파일을 생성한다.
 
notion image
 
포트포워드로 8000 포트가 요청되면 3000 포트가 요청된다.
 
notion image
 
 
CMD로 변수를 받을 수 있기 때문에 5000번 포트로 변경해서 실행할 수도 있다.
notion image
 
notion image
 
Share article

{CODE-RYU};