概要
- Dockerでローカル開発環境を構築しているコードをGithub上でPR作成するときにCIチェックでテストが走るようにしたい。
-
$ docker compose up
後にcomposer installを実行したところエラーが出たので自身の環境の解決方法をまとめる。
前提
-
下記のようなワークフローのyamlファイルを定義した。(環境構築は
$ make init
コマンドを実行するだけで完了するように下準備はしてある。)phpunit.yamlname: 'do PHPUnit' on: push: branches: - 'feature/*' - 'hotfix/*' - 'release/*' pull_request: types: [opened, reopened] jobs: do_phpunit: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: init run: make init - name: check echo run: echo 'init end'
問題
-
下記エラーが出て止まった。
docker-compose exec api composer install the input device is not a TTY make: *** [Makefile:27: composer_install_for_api] Error 1 Error: Process completed with exit code 2.
原因
-
TTYが無いためエラーになっている模様、、!
-
Makefile内のcomposer installを実行している部分を下記のように修正した。
.PHONY: composer_install_for_api composer_install_for_api: docker-compose exec -T api composer install
-
上記の状態でcommitしてpushしたところ本エラーは出なくなった。
その後の話し
- composer installコマンドに限らず、Actionsで実行するコンテナ系のコマンドはすべて-Tをつけないとエラーになるっぽいです。