반응형
테스트 목표
Dockerfile 변수인 arg를 Entrypoint안에 사용할 수 있는지 테스트합니다. ENTRYPOINT에 arg를 동적변수처럼 사용할 수 있는지 확인하는게 목표입니다.
결론
- arg를 ENTRYPOINT에 사용할 수 있지만, 항상 빈값으로 설정됩니다. arg 값은 docker build에서만 유효한 값이므로 docker conatiner 실행할 때는 빈값으로 설정 되는 것 같습니다.
- 따라서, arg대신 ENV를 사용해야 ENTRYPOINT에 동적변수를 사용할수 있습니다.
- 단, ENTRYPOINT는 보간(interpolation)을 처리할 수 있는 쉘 스크립트로 시작해야 합니다.
ENV JAVA_OPTS=""
ENTRYPOINT ["sh", "-c", "java ${JAVA_OPTS} -jar /app.jar"]
테스트 시나리오에 사용한 dockerfile은 github에 공개되어 있습니다.
테스트 시나리오1
- 시나리오: arg JAVA_OPTS를 ENTRYPOINT에 설정
- 결과: 컨테이너 실행 오류
- Dockerfile
FROM openjdk:8-jdk-alpine
COPY target/helloworld-0.0.1-SNAPSHOT.jar app.jar
ARG JAVA_OPTS=""
EXPOSE 8080
ENTRYPOINT ["java", "${JAVA_OPTS}", "-jar", "/app.jar"]
- docker build
docker build --build-arg JAVA_OPTS="-Xms256M -Xmx512M" -t localtest-java:alpha .
- docker container 실행
docker run --rm -d localtest-java:alpha
테스트 시나리오2
- 시나리오: ENTRYPOINT를 sh -c "java ..."로 java를 실행하며, arg JAVA_OPTS를 ENTRYPOINT에 사용
- 결과: 컨테이너는 정상실행되지만 JAVA_OPTS는 빈값
- Dockerfile
FROM openjdk:8-jdk-alpine
COPY target/helloworld-0.0.1-SNAPSHOT.jar app.jar
ARG JAVA_OPTS=""
EXPOSE 8080
ENTRYPOINT ["sh", "-c", "java ${JAVA_OPTS} -jar /app.jar"]
- docker build
docker build --build-arg JAVA_OPTS="-Xms256M -Xmx512M" -t localtest-java:alpha .
- docker container 실행
docker run --rm -d localtest-java:alpha
반응형
테스트 시나리오3
- 시나리오: ENV JAVA_OPTS를 ENTRYPOINT에 설정
- 결과: 컨테이너 실행 오류(테스트 시나리오 1과 동일)
- Dockerfile
FROM openjdk:8-jdk-alpine
COPY target/helloworld-0.0.1-SNAPSHOT.jar app.jar
ENV JAVA_OPTS=""
EXPOSE 8080
ENTRYPOINT ["java", "${JAVA_OPTS}", "-jar", "/app.jar"]
- docker build
docker build -t localtest-java:alpha .
- docker container 실행
docker run --rm -e JAVA_OPTS="-Xms256M -Xmx512M" localtest-java:alpha
테스트 시나리오4
- 시나리오: ENTRYPOINT를 sh -c "java ..."로 java를 실행하며, ENV JAVA_OPTS를 ENTRYPOINT에 사용
- 결과: 컨테이너는 정상실행, JAVA_OPTS설정 정상
- Dockerfile
FROM openjdk:8-jdk-alpine
COPY target/helloworld-0.0.1-SNAPSHOT.jar app.jar
ENV JAVA_OPTS=""
EXPOSE 8080
ENTRYPOINT ["sh", "-c", "java ${JAVA_OPTS} -jar /app.jar"]
- docker build
docker build -t localtest-java:alpha .
- docker container 실행
docker run --rm -e JAVA_OPTS="-Xms256M -Xmx512M" localtest-java:alpha
참고자료
반응형
'전공영역 공부 기록' 카테고리의 다른 글
aws 환경변수 초기화 (0) | 2023.08.21 |
---|---|
쿠버네티스 pod running과 ready 차이 (0) | 2023.08.13 |
Argocd rbac 테스트 (0) | 2023.08.06 |
NLB를 장애상황 퀴즈 (1) | 2023.08.06 |
DNS 이해 (1) | 2023.07.21 |