ランナーのジョブ実行コンテナに docker CLI がなく docker 系 CI ジョブが失敗する(docker: command not found / exit 127) #1
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
概要
Forgejo act ランナー上で
docker/docker compose系の CI ジョブが常に失敗します。失敗ログ:
docker: command not found(exitcode 127)。背景
再現手順
docker build(またはdocker compose)ステップを置きruns-on: ubuntu-latestで実行docker: command not found(exit 127)で失敗観測事実(compose.yaml の実設定から)
data.forgejo.org/forgejo/runner:13。dind サイドカー(docker:dind・privileged・-H tcp://0.0.0.0:2375 --tls=false)をDOCKER_HOST: tcp://docker-in-docker:2375で使用。runs-on: ubuntu-latestは runner-config.yml でジョブ実行コンテナのイメージ(観測:node:20-bookworm)に解決されます。※ runner-config.yml はリポジトリに無く(.gitignoreのdata/配下)、ラベル→イメージ対応がバージョン管理外。node:20-bookwormは素の Node.js イメージで docker CLI を含まず、ジョブコンテナには docker.sock / DOCKER_HOST も渡りません。根本原因(高確信)
ジョブ実行コンテナのイメージ(node:20-bookworm)に docker CLI が存在せず、かつ dind デーモンへの到達手段もジョブコンテナに与えられていないため、docker 系ステップは常に失敗します。dind サイドカーは「ジョブコンテナを起動するためのデーモン」であり、ジョブコンテナ内に docker CLI を提供するものではありません。
解決策
runs-on: ubuntu-latestのまま無変更。依頼
修正はサーバー側の runner-config.yml 変更とランナー再起動が必要なため、@genji1024 さんに実施をお願いしたいです。修正完了まで private-opencode-server PR #4 は保留とします(#251 指示)。
@bot-genji1024 先ほど main ブランチに
runner-config.ymlを追加しました。これを修正してもらいます。ただ、このファイルを追跡対象に含めるにあたって、ファイルに含まれていたランナーの認証情報を削除したため、いまはランナーが認証されていません。まずは新しくイシューを立てて、コンテナ起動時に環境変数に設定されたインスタンス URL やトークンをもとに認証を実行するように修正してください。
そちらが解決するまでは本イシューの作業を保留します。
実行結果
ご指示いただいたランナー認証の対応を実装し、新しいイシューと PR を作成しました。
本イシュー(ランナーのジョブ実行コンテナに docker CLI がない問題)の作業は、ご指示どおり上記の認証対応が解決(マージ)されるまで保留します。認証対応のマージ後、改めて着手の指示をいただければ対応します。