Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[compose.yml,Makefile] docker レガシーコマンドから移行 #122

Open
wants to merge 2 commits into
base: main
Choose a base branch
from

Conversation

flll
Copy link

@flll flll commented Oct 26, 2024

[compose.yml]

  • docker-compose.ymlからcompose.ymlに変更しました
  • これはCompose仕様が Docker社から独立し、OCIの一部となったことを反映しています
  • 別のオーケストレーションツールが認識しないことがありますため将来的に変更としました

[Makefile]

  • 互換性を保つために'docker compose'と'docker-compose'コマンドの両方を使えるようにしました
  • docker自身がcompose機能を担うようになったので最新版だとdocker composeのみとなりdocker-composeがdeprecatedとなりました

[compose.yml]
  - docker-compose.ymlからcompose.ymlに変更しました
  - これはCompose仕様が Docker社から独立し、OCIの一部となったことを反映しています
  - 別のオーケストレーションツールが認識しないことがありますため将来的に変更としました

[Makefile]
  - 互換性を保つために'docker compose'と'docker-compose'コマンドの両方を使えるようにしました
  - docker自身がcompose機能を担うようになったので最新版だとdocker composeのみとなりdocker-composeがdeprecatedとなりました
@mnakada
Copy link
Owner

mnakada commented Oct 27, 2024

docker composeにするとteeにpipeしている関係か、MacのTerminalだと実行時の表示の改行コードが化けてしまいます。
teeへのpipeをなくすとdocker composeでも正常に表示されます。

docker-composeの場合

atomcam_tools 21261 ) docker-compose exec  builder /src/buildscripts/build_all  |tee rebuild_`date +"%Y%m%d_%H%M%S"`.log
#
# configuration written to /atomtools/build/buildroot-2016.02/.config
#
/usr/bin/make -j1  HOSTCC="/usr/bin/gcc" HOSTCXX="/usr/bin/g++" silentoldconfig

docker composeの場合

atomcam_tools 21262 ) docker compose exec  builder /src/buildscripts/build_all  | tee rebuild_`date +"%Y%m%d_%H%M%S"`.log
#
 # configuration written to /atomtools/build/buildroot-2016.02/.config
                                                                      #
                                                                       /usr/bin/make -j1  HOSTCC="/usr/bin/gcc" HOSTCXX="/usr/bin/g++" silentoldconfig
                                                                      make[1]: Entering directory '/atomtools/build/buildroot-2016.02'

logファイルには正常に記録されているのでtty関連の問題かな。

@flll
Copy link
Author

flll commented Oct 27, 2024

おそらくバッファリングのせいでこうなってしまっているのかと
標準出力のバッファリングを無効にし、リアルタイムでの出力させればおかしくならずに済むと思います

マックの実機持っていないので再現が出来ませんが、
以下の4つコマンドのどれかに変更したら行けるかと思います

unbuffer docker compose exec builder /src/buildscripts/build_all | tee rebuild_$(date +"%Y%m%d_%H%M%S").log
stdbuf -oL docker compose exec builder /src/buildscripts/build_all | tee rebuild_$(date +"%Y%m%d_%H%M%S").log
script -q /dev/null docker compose exec builder /src/buildscripts/build_all | tee rebuild_$(date +"%Y%m%d_%H%M%S").log
docker compose exec -T builder /src/buildscripts/build_all | tee rebuild_$(date +"%Y%m%d_%H%M%S").log

もしくはcompose.ymlにて疑似TTYを割り当てる

services:
  builder:
    tty: true

私の環境ではどれも変わりませんでしたためどれがうまくいくか試してください

@mnakada
Copy link
Owner

mnakada commented Oct 27, 2024

unbuffer, stdbufはgnuのものなのでOS-Xにはコマンドが存在してないですね。
script -q /dev/null はうまくいきました。
-Tオプションとtty: tureは崩れたままでした。
なので、

DOCKER_COMPOSE=$(shell docker compose version > /dev/null 2>&1 && echo docker compose || echo docker-compose)

の行を

DOCKER_COMPOSE=$(shell docker compose version > /dev/null 2>&1 && echo script -q /dev/null docker compose || echo docker-compose)

にするのが良さそうです。

@flll
Copy link
Author

flll commented Oct 28, 2024

ありがとうございます
私の環境で試したところ、script -q /dev/nullだとなにも画面に表示されなくなりました
以下のコマンドで解決できないかをお願いします

# dockerがpython製の場合(古いdocker v1)、環境変数 PYTHONUNBUFFERED を使用
PYTHONUNBUFFERED=1 docker compose exec builder /src/buildscripts/build_all | tee rebuild_$(date +"%Y%m%d_%H%M%S").log
# 環境変数 FORCE_COLOR を使用(カラー出力を維持したい場合)
FORCE_COLOR=1 docker compose exec builder /src/buildscripts/build_all | tee rebuild_$(date +"%Y%m%d_%H%M%S").log

これがうまくいかなければ、
不自由なければunbuffer, stdbufを使えるようにインストールしていただければと思います


makeに疎いので関係ない余談なのですが、makeを実行した際にプロンプトに表示されるこの、

ola (open lighting architecture) (BR2_PACKAGE_OLA) [N/y/?] (NEW) 
mosh (BR2_PACKAGE_MOSH) [N/y/?] (NEW) 
host sam-ba (BR2_PACKAGE_HOST_SAM_BA) [N/y/?] (NEW) 

これらすべてyとするとビルドに失敗し、
すべてn(このままエンターキー)するとビルドには成功しますが、
atom swingが起動しなくなります(常にオレンジLEDが点滅)

@mnakada
Copy link
Owner

mnakada commented Oct 28, 2024

私の環境で試したところ、script -q /dev/nullだとなにも画面に表示されなくなりました

環境はlinuxですか?
rebuild_$(date +"%Y%m%d_%H%M%S").logにlogは生成されていますか?

# dockerがpython製の場合(古いdocker v1)、環境変数 PYTHONUNBUFFERED を使用
PYTHONUNBUFFERED=1 docker compose exec builder /src/buildscripts/build_all | tee rebuild_$(date +"%Y%m%d_%H%M%S").log
# 環境変数 FORCE_COLOR を使用(カラー出力を維持したい場合)
FORCE_COLOR=1 docker compose exec builder /src/buildscripts/build_all | tee rebuild_$(date +"%Y%m%d_%H%M%S").log

いずれも駄目でした。

これがうまくいかなければ、
不自由なければunbuffer, stdbufを使えるようにインストールしていただければと思います

OS-Xでbuildする人全員が対応必要なので、あまりやりたくないですね。

script -q /dev/stdout にしたらどうですか?OS-Xでは正常に出ています。

ola (open lighting architecture) (BR2_PACKAGE_OLA) [N/y/?] (NEW) 
mosh (BR2_PACKAGE_MOSH) [N/y/?] (NEW) 
host sam-ba (BR2_PACKAGE_HOST_SAM_BA) [N/y/?] (NEW) 

こちらはOS-Xでは出ないです。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants