GitHub Actionsでdocker-composeを使う
GitHub Actionsとdocker-compose
GitHub Actionsではdockerhubのイメージを使ったワークフローが組めるが、docker-composeも使える。ローカル開発時はdocker-composeで制御することが多いので、そのまま活用できるのはシンプルで強力。
ワークフローの書き方
1 | # This is a basic workflow to help you get started with Actions |
環境変数とシークレット
docker-composeのパラメーター定義
Dockerに渡すパラメーターは環境変数としてdocker-compose.ymlで次の定義をする。
1 | environment: |
ローカル開発中のパラメーター
docker-compose.ymlはGitリポジトリに含めるため、公開すべきでないパラメーターは.envファイルに記述する。.envファイルは.gitignoreで管理対象外として定義しておく。
1 | ENVENV1=xxxxxxxxxxxxxx |
GitHub Actionsでのパラメーター
GitHub Actionsでは.envのかわりに、リポジトリの設定でSecretsを使用して定義する。
たとえばSecretsに定義したパラメーターをGitHub Actionsで参照するのは以下の定義になる。
1 | env: |

ワークフローでdocker-composeを使う
docker-composeの起動方法
そのままdocker-composeコマンドが使用できる。
docker-compose内で定義されたDBなどの依存するサービスはdocker-compose up -dで起動し、docker-compose exec -T app bash xxxxxx.shでメインのコードを実行する。
docker-compose up -dはサービスを起動して、コマンド自体は終了docker-compose execでバックグラウンド起動したサービスにAttachし目的のコマンドを実行
the input device is not a TTY
docker-compose exec -T app bash xxxxxxxx.shの実行でエラーになった。
1 | the input device is not a TTY |
解決方法は2つある
- 環境変数
COMPOSE_INTERACTIVE_NO_CLI=1を使用する docker-compose exec -Tで起動する