LoginSignup
6
7

More than 5 years have passed since last update.

CircleCI で設定した環境変数を Dockerfile で読み込んでイメージに反映する

Last updated at Posted at 2016-09-08

以前、GIRLS.PRODUCTに参加した時、CircleCI、ECS、ECR環境でDockerコンテナを継続的デプロイする環境を作ったのですが、CircleCIの管理画面で設定した環境変数をDockerイメージに反映するのに少し苦労したのでメモです。

上記環境を設定するときは以下を参照しました。
CircleCI+ECS+ECR環境でDockerコンテナのCD(継続的デプロイ)環境を構築する -前編-
CircleCI+ECS+ECR環境でDockerコンテナのCD(継続的デプロイ)環境を構築する -後編-

CircleCIで環境変数を設定する

Project Settingsより、環境変数を設定します。
スクリーンショット 2016-09-08 17.09.15.png

circle.ymlを編集する

CircleCIのDockerのバージョンが低いので、上げる

イメージビルド時に使う予定の--build-argがDockerのバージョン1.9から使えますが、CircleCIでそのまま使うと昔のバージョンで実行してしまうので、変える必要があります。

circle.yml
machine:
  pre:
    - curl -sSL https://s3.amazonaws.com/circle-downloads/install-circleci-docker.sh | bash -s -- 1.10.0
  services:
    - docker

circle.ymlのイメージビルドするところで--build-argを使う

circle.yml内ではCircleCIで設定した環境変数が使えるため、--build-argでひとつひとつ丁寧にDockerfileに受け渡します。

docker build --build-arg DOCKER_FILE_PATH_NAME=$CIRCLE_CI_PATH_NAME .

上記二つを反映して実際に動かしたファイルは以下です。

circle.yml
machine:
  php:
    version: 7.0.4
  pre:
    - curl -sSL https://s3.amazonaws.com/circle-downloads/install-circleci-docker.sh | bash -s -- 1.10.0
  services:
    - docker

dependencies:
  post:
    - docker build --build-arg WOMANSHIFT_DEFAULT_MYSQL_URL=$WOMANSHIFT_DEFAULT_MYSQL_URL --build-arg WOMANSHIFT_DEFAULT_MYSQL_PASSWORD=$WOMANSHIFT_DEFAULT_MYSQL_PASSWORD --build-arg AWS_SECRET_KEY=$AWS_SECRET_KEY --build-arg AWS_KEY=$AWS_KEY -t $AWS_ACCOUNT_ID.dkr.ecr.us-east-1.amazonaws.com/womanshift-web:$CIRCLE_SHA1 .

test:
  post:
    - docker run -d -p 80:80 --name womanshift-web $AWS_ACCOUNT_ID.dkr.ecr.us-east-1.amazonaws.com/womanshift-web:$CIRCLE_SHA1; sleep 10

deployment:
  prod:
    branch: master
    commands:
      - ./deploy.sh

DockerfileでARGENVを使う

ARG--build-argで設定した変数をDockerfile内で使用すると宣言します。
ENVでイメージに環境変数を設定します。

実際に動かしたファイルは以下です。

FROM richarvey/nginx-php-fpm:php7

ARG WOMANSHIFT_DEFAULT_MYSQL_URL
ARG WOMANSHIFT_DEFAULT_MYSQL_PASSWORD
ARG AWS_SECRET_KEY
ARG AWS_KEY

ENV FUEL_ENV production
ENV WOMANSHIFT_DEFAULT_MYSQL_URL $WOMANSHIFT_DEFAULT_MYSQL_URL
ENV WOMANSHIFT_DEFAULT_MYSQL_PASSWORD $WOMANSHIFT_DEFAULT_MYSQL_PASSWORD
ENV AWS_SECRET_KEY $AWS_SECRET_KEY
ENV AWS_KEY $AWS_KEY

COPY . /opt/womanshift

COPY conf/default.conf /etc/nginx/sites-available/default.conf

RUN chmod 777 /opt/womanshift/fuel/app/logs
RUN chmod 777 /opt/womanshift/fuel/app/tmp

EXPOSE 80

WORKDIR /opt/womanshift

以上で、本番反映したコンテナからAWS各種サービス、MySQLに接続することが出来ました。

6
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
7