Jenkinsやらgitのhookやらで利用した時にPythonのエラーが出たのを対応したメモ。
環境
- OS
- ProductName: Mac OS X
- ProductVersion: 10.11.6
- BuildVersion: 15G1004
- Docker
- 1.12.1
- docker-compose
- 1.8.0
docker-compose exec でエラーが発生する
Jenkinsやらgitのhookで docker-compose exec
を利用するとエラーが発生する。
例えばJenkisnの場合を例として app コンテナで script.sh というシェルスクリプトを実行してみる。
単純なスクリプト。
1 |
|
Jenkinsには以下を設定。
1 | node { |
実行後、以下のエラーが発生する。
1 | [Server] Running shell script |
TTYが悪さをしているらしい
調べると原因はわからないが、ttyを無効にすると止まらなくなったよというような内容を見つけた。
ttyとは、標準入出力となっている端末デバイス(制御端末、controlling terminal)の名前を表示するUnix系のコマンドである。元来ttyとはteletypewriter(テレタイプライター)のことを指す。
docker-compose exec -h
でヘルプを見ると以下のオプションがあった。
-T Disable pseudo-tty allocation. By default
docker-compose exec
allocates a TTY.
これをつけて実行するとttyが無効になるらしいので、つけてみる。
1 | node { |
実行後の結果。
1 | [Server] Running shell script |
-T
をつけることで問題なく動くようになった。
以上です。