2016-09-22 3 views
0

reynierpm으로 페도라에 로그인했으며 Dockerfile에서 Docker 이미지를 작성한다고 가정 해 보겠습니다. 이 이미지에는 램프 환경이 포함됩니다. 나는 다음과 같이 보이는 아파치 가상 호스트 (VH) 기본 파일이 :이 파일은 이미지에 적절한 위치에 복사 내장 프로세스의 일환으로Docker 컨테이너의 이미지 빌드에 대한 값 설정

<VirtualHost *:80> 
    #ServerName www.example.com 

    ServerAdmin [email protected] 
    DocumentRoot /var/www 

    <Directory /var/www> 
     AllowOverride All 
     Require all granted 
    </Directory> 

    ErrorLog /dev/stdout 
    CustomLog /dev/stdout combined 
</VirtualHost> 

.

호스트에서 로그인 한 사용자 이름을 가져와이 VH에 동적으로 설정할 수 있습니까? 끝에서 나는 다음과 같은 결과를 얻을 싶습니다

<VirtualHost *:80> 
    ServerName reynierpm.dev 

    ServerAdmin [email protected] 
    DocumentRoot /var/www 

    <Directory /var/www> 
     AllowOverride All 
     Require all granted 
    </Directory> 

    ErrorLog /dev/stdout 
    CustomLog /dev/stdout combined 
</VirtualHost> 

나는 떠들썩한 파티에서 $(whoami)를 사용하여 현재 사용자에 대한 가치를 얻을 수 있다는 사실을 알고를하지만 난 삽입 할 수있는 방법/도커의 VH 파일로 설정 구축 ?

FROM ubuntu:14.04.5 
MAINTAINER Me <[email protected]> 
ARG USER_NAME=unknown 
VOLUME ["/var/www"] 

RUN apt-get update && \ 
    DEBIAN_FRONTEND=noninteractive \ 
    apt-get install -y software-properties-common && \ 
    apt-get update && \ 
    apt-get install -y \ 
     apache2 \ 
     php5 \ 
     php5-cli \ 
     libapache2-mod-php5 \ 
     php5-gd \ 
     php5-json \ 
     php5-mcrypt \ 
     php5-mysql \ 
     php5-xdebug \ 
     php5-curl \ 
     php5-memcached \ 
     php5-mongo \ 
     zend-framework \ 
     mc \ 
     nano 

# Copy default virtual host file. 
COPY /config/apache2_vhost/apache_default /etc/apache2/sites-available/000-default.conf 
COPY run /usr/local/bin/run 
RUN chmod +x /usr/local/bin/run 
RUN a2enmod rewrite 

EXPOSE 80 
EXPOSE 9001 

CMD ["/usr/local/bin/run"] 

UPDATE : 빌드 내가 run 파일에 다음 행을 추가 @Elton 제안 다음은 인수

를 사용하려고하는 동안 실패

Dockerfile의 내용입니다
sed -i "s/#ServerName www.example.com/$USER_NAME.dev/g" /etc/apache2/sites-available/000-default.conf 

다음으로 이미지를 빌드 해보십시오.

docker build --build-arg USER_NAME=$(whoami) -t dev-php55 . 

그러나 다음과 같은 메시지와 함께 실패 :

하나 이상의 빌드 - 인수 [USER_NAME]가 소모되지 않았다 구축 실패.

무엇이 잘못 되었습니까? 당신이 빌드 할 때 그런 다음 whoami을 통과

FROM ubuntu                                   
ARG USER_NAME=unknown                                 
RUN echo Built by: $USER_NAME > /builder.txt 

을 : 그 값이 이미지에 고정하려면

답변

2

은 최선의 선택은 빌드 인수를 사용하고 Dockerfile에서 일부 텍스트 치환을하는 것입니다 :

docker run temp cat /builder.txt                             
Built by: ubuntu 
:

docker build --build-arg USER_NAME=$(whoami) -t temp . 

빌드 인수는 Dockerfile의 기본 그래서 이미지가 실제 빌더의 이름을 가지고 우선

편집 :build arguments은 빌드 프로세스 중에 환경 변수로만 사용할 수 있습니다. 변수 또는 값이 최종 빌드 이미지에 없습니다. 따라서 RUN과 같은 빌드 명령어에서만 인수 값을 사용할 수 있습니다.

+0

내 편집을 살펴볼 수 있습니까? 어쩌면 나는 무엇인가 놓치고있다. – ReynierPM

+0

그 오류는'--build-arg'의 인자의 이름이'ARG'의 이름과 일치하지 않는다는 것을 의미합니다. –

+0

좋아,하지만 이것은 내가 성취하고자하는 것이 아니다. 내가 겪고있는 주요 문제를 이해하고 있습니까? OP가 어쩌면 더 나아 졌는지 살펴보십시오 – ReynierPM

관련 문제