このDocker画像の最後の質問は、Docker image run results in executable not found in pathから続きます。私は、-t
がrun
コマンドに含まれているときにDockerイメージが実行されないことを発見しました。したがって、docker run -it <image> --version
は単に出力なしで終了します。しかし、-it
を削除したり、-t
を削除しても、期待通りのバージョンが出力されます。なぜ、Dockerイメージは-tを含んでいないのですか?
私の質問は、なぜ疑似ttyを使用する-t
で動作しないのですか? ocaml/opamイメージが何らかの形で使用されていると、それが起こらないようにしますか?
Dockerfile
FROM ocaml/opam
SHELL ["/bin/sh", "-lc"]
LABEL io.whalebrew.name 'ocp-indent'
LABEL io.whalebrew.config.working_dir '/workdir'
WORKDIR /workdir
RUN opam init --auto-setup
RUN opam install --yes ocp-indent
RUN ocp-indent --help
COPY docker-entrypoint.sh /docker-entrypoint.sh
ENTRYPOINT ["/docker-entrypoint.sh"]
CMD ["--help"]
docker-entrypoint.sh
#!/bin/sh -l
ocp-indent "[email protected]"
ありがとうございました。どの時点でocaml/opamが4.05.0を更新して使用するので、変更するたびにDockerfileを変更したくないので、エントリーポイントを変更することを躊躇しました。私が試したひとつのことは、悪い考えであれば、 '#!/ bin/sh -l'を'#!/ bin/bash -l'に変更していたと言えます。それはそれを修正するように見えた。 – user1795832
一般的には、 '-l'ソースのランダムなプロファイルファイルではなく、Dockerfileやサポートファイルに表示されるすべての設定を保持しています。 'npm'や' composer'のような他の言語パッケージマネージャは、特定のバージョンに対する一般的な 'bin'リンクをインストールの一部として作成できます。おそらく' opam'にはオプションがありますか?しかしbashが動作すれば...それは動作します:) – Matt