docker-compose.yml → Dockerfile に変数を渡す方法
↓この記事で使ったネタです![]()
- syslog受信 → S3保存 してくれるDockerコンテナ お手軽セット https://qiita.com/yagrush/items/2fbff71c1c2bf12f7d71
 
1/2 docker-compose.yml側
buildキーの子要素としてargsキーを追加し、
その下に配列として、渡したい変数名と値を書いていきます。
services:
  my-s3access-app:
    build:
      context: ./app
      dockerfile: Dockerfile
      args:
        - GITHUB_ACC=hogehige
        - GITHUB_ACC_PASSWORD=agd82gfo3gfagkaf
     ・
     ・
     ・
2/2 Dockerfile側
ARGコマンドで宣言(キャッチ)すると、それ以降$HOGEで利用可能になります。
FROM golang:1.13
ARG GITHUB_ACC
ARG GITHUB_ACC_PASSWORD
RUN echo -e "machine github.com\nlogin $GITHUB_ACC\npassword $GITHUB_ACC_PASSWORD" > ~/.netrc
RUN go mod download
 ・
 ・
 ・
Dockerfileが複数FROM構成のときの注意点
次のFROMコマンドに処理が移るとき引き継がれないので、ARGしなおさないといけません。
ちなみに複数FROMが必要となるのは
[ソースコードをビルドするイメージ]
と
[ビルド結果の実行体だけを配備して実行するためのイメージ]
を分けたい時などですね。
FROM golang:1.13 as base
FROM base as builder
ARG GITHUB_ACC
ARG GITHUB_ACC_PASSWORD
RUN echo -e "machine github.com\nlogin $GITHUB_ACC\npassword $GITHUB_ACC_PASSWORD" > ~/.netrc
RUN go mod download
 ・
 ・
 ・
FROM base as scratch
ARG GITHUB_ACC
ARG GITHUB_ACC_PASSWORD
 ・
 ・
 ・