Dockerで詰まったところをまとめていく
気が向いたり、見つけたりしたら追記していくと思う。
もしかしたらgithubのtilにまとめちゃって更新しないかもしれない。
sourceコマンドが使えない
エラーメッセージ
/bin/sh | source: not found
Dockerのビルドでは/bin/shが使われていた。
ubuntuでは/bin/sh -> /bin/dashになっていた。
sourceコマンドや.コマンドはbashの組み込み(?)関数なので、そういう設定が必要
dockerfile
SHELL ["/bin/bash", "-o", "pipeline". "-c"]
無理矢理/bin/shを/bin/bashに向かせるシンボリックリンクを作ったりするとhadolintに怒られるよ
- DL4005
- SC2039
この辺のエラー
テキストファイルがビジー云々
エラーメッセージ
/bin/sh: ./configure: /bin.sh: Text file busy
/bin/sh: ./configure: /bin/sh: 誤ったインタプリタです:テキストファイルがビジー状態です
configureファイルの中とかでchmodしていないですか?
chmodコマンド後にsyncコマンドを使うと解決します。
dockerfile
RUN find ./ -type f -name * | xargs sed -i /^chmod/a sync
これだと行頭のchmodコマンドしか見つけられない。
パイプしてるようなのまで見つけようと思ったらsedコマンドの内容を変えてね
参照したIssue: Running chmod on file results in 'text file busy' when running straight after. #9547