Program Tip

dockerfile을 통해 docker 이미지를 빌드하는 동안 cmd 행을 통해 ENV 변수를 전달할 수 있습니까?

programtip 2020. 12. 8. 19:51
반응형

dockerfile을 통해 docker 이미지를 빌드하는 동안 cmd 행을 통해 ENV 변수를 전달할 수 있습니까?


Dockerfile 을 사용하여 centOs를 기반으로 도커 이미지를 빌드하는 작업을 진행 중 입니다. dockerfile 내부의 단계 중 하나 는 프록시 뒤에서 작동하기 위해 http_proxyhttps_proxy ENV 변수를 설정해야합니다.

이 Dockerfile은 서로 다른 프록시를 가진 여러 팀에서 사용되므로 각 팀에 대해 Dockerfile을 편집 할 필요가 없습니다. 대신 빌드 타임에 ENV 변수를 전달할 수있는 솔루션을 찾고 있습니다.

sudo docker build -e http_proxy = somevalue.

이것을 제공하는 옵션이 이미 있는지 확실하지 않습니다. 내가 뭔가를 놓치고 있습니까?


컨테이너는 build arguments환경 변수처럼 작동 하는 (Docker 1.9 이상에서) 사용하여 빌드 할 수 있습니다 .

방법은 다음과 같습니다.

FROM php:7.0-fpm
ARG APP_ENV=local
ENV APP_ENV ${APP_ENV}
RUN cd /usr/local/etc/php && ln -sf php.ini-${APP_ENV} php.ini

그런 다음 프로덕션 컨테이너를 빌드하십시오.

docker build --build-arg APP_ENV=prod .

특정 문제에 대해 :

FROM debian
ENV http_proxy ${http_proxy}

그런 다음 다음을 실행하십시오.

docker build --build-arg http_proxy=10.11.24.31 .

을 사용하여 컨테이너를 빌드하는 경우 이러한 build-args를 파일 에 지정할docker-compose있지만 명령 줄에서는 지정할docker-compose.yml없습니다. 그러나 환경 변수를 사용 하는 docker-compose.yml파일 에서 변수 대체를 사용할 수 있습니다 .


나는 같은 상황에 직면했다.

Sin30의 대답에 따르면 예쁜 솔루션은 쉘을 사용하는 것입니다.

CMD ["sh", "-c", "cd /usr/local/etc/php && ln -sf php.ini-$APP_ENV php.ini"]

참고 URL : https://stackoverflow.com/questions/31198835/can-we-pass-env-variables-through-cmd-line-while-building-a-docker-image-through

반응형