2017-08-22 14 views
1

DockerとDockerを使ってnginx + phpのスタックを構築しています。Docker-compose:envファイルに変数を設定し、Dockerファイルで使用します。

.envファイルにタイムゾーンを設定してDockerfileで使用しようとしていますが、私はdocumentationから何かを理解していない可能性があります。

.env

# Timezone 
TIMEZONE=Europe/Madrid 

ドッカー-compose.yml

version '2' 

services: 
    php: 
     build: php7-fpm 
     volumes: 
      - ${APP_PATH}:/var/www/app 
      - ./logs:/var/www/logs 
     environment: 
      TIMEZONE: ${TIMEZONE} 

#[...more.stuff...] 

PHP7-FPM/Dockerfile

FROM php:7.0-fpm 
ARG TIMEZONE 

#[...more.stuff...] 

ENV TIMEZONE=${TIMEZONE} 
RUN ln -snf /usr/share/zoneinfo/$TIMEZONE /etc/localtime && echo $TIMEZONE > /etc/timezone 
RUN printf '[PHP]\ndate.timezone = "%s"\n', $TIMEZONE > /usr/local/etc/php/conf.d/tzone.ini 

時間ゾーンがコンテナ内で正しく設定されていません(PHPコンテナのbash内でphp --info | grep timezoneを実行しています)。 Dockerfileに手動でゾーンを書き込むと動作します。あなたがドッキングウィンドウにビルド引数を渡す必要があり

+0

実際の問題は何ですか? – user3012759

+0

タイムゾーンがコンテナ内で正しく設定されていません。 Dockerfileに手動でゾーンを書き込むと、ゾーンが動作します。 – CarlosAS

答えて

2

version '2' 

services: 
    php: 
     build: 
      dockerfile: php7-fpm 
      args: 
      TIMEZONE: ${TIMEZONE} 
     volumes: 
      - ${APP_PATH}:/var/www/app 
      - ./logs:/var/www/logs 

を構成environmentは、実行中のコンテナにしていないビルドファイルに渡されます。あなたはをbuildセクションに渡す必要があります

+0

あなたは '--build-arg'リストを意味します、そうですか? –

+0

はい、あなたは 'docker-compose'を使って渡すことさえできます。答えは –

+0

のcomposeファイルを見てください。' docker build'のステップで '--build-arg'を渡すことを意味しました。アプリケーション(または少なくともそれは私にどのように見えるか) –

関連する問題