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
・
・
・