🐋
Docker と Docker Compose の環境変数 - Part 2. オプションとプロパティ
はじめに
コマンドのオプションと compose.yaml
ファイルのプロパティについてまとめました。
◯ 概観
1. 起動の流れ
2. オプションとプロパティ
-
docker
コマンド- Docker イメージのビルド時
-
docker image build
コマンド- キーバリュー指定
-
--build-arg
オプション
-
- ファイル指定
- ない
- キーバリュー指定
-
- Docker コンテナの実行時
-
docker container run
コマンド- キーバリュー指定
-
--env
,-e
オプション
-
- ファイル指定
-
--env-file
オプション
-
- キーバリュー指定
-
- Docker イメージのビルド時
-
compose.yaml
ファイル- Docker イメージのビルド時
-
services.サービス.build
プロパティ- キーバリュー指定
-
args
プロパティ
-
- ファイル指定
- ない
- キーバリュー指定
-
- Docker コンテナの実行時
-
services.サービス
プロパティ- キーバリュー指定
-
environment
プロパティ
-
- ファイル指定
-
env_file
プロパティ
-
- キーバリュー指定
-
- Docker イメージのビルド時
-
docker compose
コマンド- Docker イメージのビルド時
-
docker compose build
コマンド- キーバリュー指定
-
--build-arg
オプション
-
- ファイル指定
-
--env-file
オプション
-
- キーバリュー指定
-
- Docker コンテナの実行時
-
docker compose up
コマンド- キーバリュー指定
- ない
- ファイル指定
-
--env-file
オプション
-
- キーバリュー指定
-
- Docker イメージのビルド時
個人的に...
コマンドのオプション名や compose.yaml
のプロパティ名があったりなかったりで混乱しました...😇 歴史的な経緯とか不都合とか色々あると思うのですが、こんな ↓ 感じで表現が統一されてたらよかったのに...
- Docker イメージのビルド時
- キーバリュー指定
arg
- ファイル指定
arg file
- キーバリュー指定
- Docker コンテナの実行時
- キーバリュー指定
env
- ファイル指定
env file
- キーバリュー指定
◯ シリーズ
Part 2 ですが Part 1 は読まなくても大丈夫だと思います。
◯ サンプルコード
ディレクトリの名前と章立てが対応しています
gh repo clone domodomodomo/docker-env-sample
cd docker-env-sample/part2/111
# for Bash - macOS, Ubuntu
bash cmd.sh
# for PowerShell - Windows
powershell ./cmd.ps1
1. docker コマンド
1.1. Docker イメージのビルド時
docker image build
コマンド
1.1.1. キーバリュー形式
Bash
docker image build \
--build-arg BLUE=Squirtle \
--build-arg RED=Charmander \
--build-arg GREEN=Bulbasaur \
.
1.1.2. ファイル形式
見つかりませんでした。
- 確認したページ
1.2. Docker コンテナの実行時
docker container run
コマンド
1.2.1. キーバリュー形式
Bash
docker container run \
--env BLUE=Squirtle \
--env RED=Charmander \
--env GREEN=Bulbasaur \
app
1.2.2. ファイル形式
--env-file
オプション
Bash
docker container run \xhackjp1
--env-file .env.1 \
--env-file .env.2 \
--env-file .env.3 \
app
2. compose.yaml ファイル
2.1. Docker イメージのビルド時
services.サービス.build
プロパティ
2.1.1. キーバリュー形式
args
プロパティ
compose.yaml
# Map Syntax
services:
app:
build:
context: .
args:
BLUE: Squirtle
RED: Charmander
GREEN: Bulbasaur
compose.yaml
# Array Syntax
services:
app:
build:
context: .
args:
- BLUE=Squirtle
- RED=Charmander
- GREEN=Bulbasaur
2.1.2. ファイル形式
見つかりませんでした。
- 確認したページ
2.2. Docker コンテナの実行時
services.サービス
プロパティ
2.2.1. キーバリュー形式
environment
プロパティ
compse.yaml
# Map Syntax
services:
app:
build:
context: .
environment:
BLUE: Squirtle
RED: Charmander
GREEN: Bulbasaur
compse.yaml
# Array Syntax
services:
app:
build:
context: .
environment:
- BLUE=Squirtle
- RED=Charmander
- GREEN=Bulbasaur
2.2.2. ファイル形式
compse.yaml
services:
app:
build:
context: .
env_file:
- .env.1
- .env.2
- .env.3
3. docker compose コマンド
3.1. Docker イメージのビルド時
docker compose build
コマンド
3.1.1. キーバリュー形式
--build-arg
オプション
Bash
docker compose build \
--build-arg BLUE="Squirtle" \
--build-arg RED="Charmander" \
--build-arg GREEN="Bulbasaur"
3.1.2. ファイル形式
--env-file
オプション
Bash
docker compose \
--env-file .env.1 \
--env-file .env.2 \
--env-file .env.3 \
build
◯ good to know
--env-file
と --build-arg
は、それぞれどのコマンドのオプションか区別すると Docker コマンドの書式が理解しやすくなる気がします。
Bash
docker --log-level debug \
compose --env-file .env \
build --build-arg BLUE="Squirtle"
コマンド コマンドのオプション \
サブコマンド サブコマンドのオプション \
サブサブコマンド サブサブコマンドのオプション
-
--log-level
はdocker
コマンドのオプション* -
--env-file
はdocker compose
サブコマンドのオプション* -
--build-arg
はdocker compose build
サブサブコマンドのオプション*
3.2. Docker コンテナの実行時
docker compose up
コマンド
3.2.1. キーバリュー形式
見つかりませんでした。
3.2.2. ファイル形式
Bash
docker compose \
--env-file .env.1 \
--env-file .env.2 \
--env-file .env.3 \
up
おわりに
ありがとうございました。
Discussion