2016-09-22 7 views
0

私はFedoraにreynierpmという名前でログインしていて、DockerファイルからDockerイメージを作成します。その画像にはLAMP環境が含まれます。私は以下のように見えるApacheバーチャルホスト(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に動的に設定できますか?私はbashのから$(whoami)を使用して、現在のユーザーの値を取得しますが、私は挿入することができますどのように構築/ドッカーに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> 

:最後に私は次のような結果を取得したいと思い?

これはDockerfileの内容です:

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:

:ビルドは@Eltonの提案に続いて引数

を使用しようとしながら、私はrunファイルに次の行を追加した失敗しました

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]構築失敗し、消費されませんでした。

何が問題なのですか。

答えて

2

あなたは、その値が画像内に固定されるようにしたい場合は、最良のオプションは、ビルド引数を使用して、あなたのDockerfileにいくつかのテキスト置換を行うことです。

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

その後、ビルド時にwhoamiを渡します。

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

関連する問題