docker file step2 : EntryPoint& WorkDIR

이진욱·2025년 1월 10일
0

Docker 공부

목록 보기
13/22

1. ENTRYPOINT

  • 주요 목적: 컨테이너의 기본 동작을 정의합니다.

  • 형식:

    • 쉘 형식: ENTRYPOINT command param

    • Exec 형식: ENTRYPOINT ["executable", "param1", "param2"]

  • 특징:

    • 컨테이너 실행 시 항상 실행됩니다.

    • docker run 명령에 추가한 인수는 ENTRYPOINT의 기본 인수로 전달됩니다.

    • 고정적으로 실행해야 하는 애플리케이션에 적합합니다.

    • 명령 대체가 어렵습니다. (덮어쓰려면 --entrypoint 옵션을 사용해야 함)

2. CMD

  • 주요 목적: 컨테이너 실행 시의 기본 명령을 정의합니다.

  • 형식:

    • 쉘 형식: CMD command param

    • Exec 형식: CMD ["executable", "param1", "param2"]

  • 특징:

    • 기본 명령을 정의하지만, docker run 명령으로 대체 가능합니다.

    • ENTRYPOINT가 없을 때만 CMD가 단독 실행됩니다.

    • 애플리케이션의 기본값을 지정하거나 필요에 따라 재정의 가능한 명령에 적합합니다.

차이점 정리

java aws 서버 구동 (메타코딩 님 수업 자료 파일)

dockerHub에서 openjdk 11jdkslim(가벼운 버전) 를 다운로드

DockerLAB/ex01/Dockerfile를 작성한다

build/aws-v3 파일은 메타코딩님 github에서 다운로드 받았다.

java-server로 파일들을 빌드

java-server 이미지 구동

결과 출력 확인

로그 구동 테스트를 위해 파라미터 값을 넣어본다

로그 확인 : docker logs 컨테이너ID

number 파라미터의 값에 따라 로그가 출력된 것을 확인

Dockerfile의 CMD 명령어 테스트

CMD 부분 추가

기존 java-server 컨테이너를 지우고 다시 build하였다. 호스트 포트 9090, 내부 포트 9091 을 넣었다.

내부 포트 설정이 잘 되었음을 확인

이번엔 내부포트를 8081로 설정하였다

CMD 서버포트가 9091이므로 8081이 작동이 안됨을 확인

이번엔 server.port를 커맨드라인에 직접 추가하였다.

docker run -dit -p 9090:9092 java-server --server.port=9092

다르게 추가하였을 때 어느 쪽이 우선순위로 적용하는지 테스트하기 위해서이다.
-> 내부 포트는 9092로 적용된 것을 확인

내부 포트를 9091로 바꿔보았다

docker run -dit -p 9090:9091 java-server --server.port=9092

Dockerfile의 9091 보다 직접 추가한 9092가 우선적으로 적용된 것을 확인하였다

profile
열심히 하는 신입 개발자

0개의 댓글