2017-11-27 3 views
-1

magento2에 대한 도킹 컨테이너를 성공적으로 설정했으며이 방법으로 env 값 인라인을 설정하여 magento2 cli 명령에 데이터베이스 설정 값을 전달합니다 벨로우즈.dockerfile에서 인라인으로 선언 된 env 값을 얻는 방법 도커 대신 env 매개 변수를 실행하는 방법

FROM docker-php 
#mysqql setup 
ENV DB_HOST 172.17.0.2 
ENV DB_NAME mydb1 
ENV DB_USER prakash 
ENV DB_PASSWORD password 

#start running the magento commands to install 
RUN cd /usr/html/bin && \ 
    ./magento setup:config:set --db-host=$DB_HOST --db-name=$DB_NAME --db-user=$DB_USER --db-password=$DB_PASSWORD 

어떻게 docker run -e DB_HOST="" -e DB_NAME="" -e DB_USER="" -e DB_PASSWORD="" <build-image-id>

이 달성하지만, 그림에 수 없습니다 할 수있는 방법을 설명하는 몇 가지 게시물을 보았다 우는 소리처럼 실행에 통해 전달하여 나는이 값이 성공적으로 수신 할 수있는이 같은 어떻게해야합니까 적절한 방법을 벗어나십시오.

+0

실제 문제가 무엇입니까? '-e' 옵션은 사용자가 지정한 값을 환경에 전달하여'Dockerfile'의 기본 설정을 덮어 씁니다. – tripleee

+1

@treepleee 환경 변수는 실행 명령에 의해 소비되지 않습니다 – yamenk

+0

응? 그들은 당신이'docker build'를 실행할 때 또는 당신에게 무엇이 있을지 설정됩니다. – tripleee

답변

0

RUN 명령에서 ENV 값을 사용하고 있습니다. 건물 컨테이너를 실행하고 실행하지 않는 경우 명령이 실행됩니다. dockerfile 안의 env 값을 하드 코드 할 때 제대로 작동하지만 cli에 전달할 수는 없습니다.

따라서 RUN 명령 빌드 인수를 전달해야합니다. 이 인수는 컨테이너를 빌드 할 때 소비되고 RUN 명령이 실행될 때 소비됩니다.

FROM docker-php 
#mysqql setup 
ARG DB_HOST 
ARG DB_NAME 
ARG DB_USER 
ARG DB_PASSWORD 

#start running the magento commands to install 
RUN cd /usr/html/bin && \ 
    ./magento setup:config:set --db-host=$DB_HOST --db-name=$DB_NAME --db-user=$DB_USER --db-password=$DB_PASSWORD 

그런 이미지를 사용하여 구축 할 수 있습니다

docker build --build-args DB_HOST=172.17.0.2 DB_NAME=mydb1 DB_USER=prakash DB_PASSWORD=password -t <image-name> . 
+0

실행 중 그 값을 -e 값으로 전달하여 빌드하지 않고 전달할 수 있습니까? –

+0

다시'docker build'를 사용하여 이미지를 빌드 할 때'RUN '이 실행됩니다. – yamenk

+1

그러나 하나의 값 집합으로 구축하고'docker run -e var = value'을 다른 값 집합으로 실행하면'Dockerfile'의 기본값을 덮어 씁니다. – tripleee

관련 문제