這是一個PATH相關的問題和配置文件。當您使用sh -c
或bash -c
時,配置文件未加載。但是當您使用bash -lc
時,它意味着加載配置文件並執行命令。現在您的配置文件可能有必要的路徑設置來運行此命令。
編輯-1
因此,與原來的答案的問題是,它不能正常工作。當我們有
ENTRYPOINT ["/bin/bash", "-lc", "ocp-indent"]
CMD ["--help"]
它最終轉化爲/bin/bash -lc ocp-indent --help
,而它的工作,我們需要/bin/bash -lc "ocp-indent --help"
。這不能通過在入口點使用命令直接完成。所以,我們需要一個新的entrypoint.sh
文件
#!/bin/sh -l
ocp-indent "[email protected]"
確保chmod +x entrypoint.sh
主機。並更新Dockerfile以下
FROM ocaml/opam
WORKDIR /workdir
RUN opam init --auto-setup
RUN opam install --yes ocp-indent
SHELL ["/bin/sh", "-lc"]
COPY entrypoint.sh /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
CMD ["--help"]
構建之後,並運行它的工作原理
$ docker run f76dda33092a
NAME
ocp-indent - Automatic indentation of OCaml source files
SYNOPSIS
原來的答覆
您可以使用以下命令
docker run -it --entrypoint "/bin/sh" <image id> env
docker run -it --entrypoint "/bin/sh -l" <image id> env
docker run -it --entrypoint "/bin/bash" <image id> env
docker run -it --entrypoint "/bin/bash -l" <image id> env
方便地測試這兩個之間的區別
現在,無論你有沒有可以rect路徑,或者只有在使用-l
標誌時纔會出現。在這種情況下,你可以改變你的泊塢窗映像的默認外殼下面
FROM ocaml/opam
WORKDIR /workdir
RUN opam init --auto-setup
RUN opam install --yes ocp-indent
SHELL ["/bin/bash", "-lc"]
RUN ocp-indent --help
ENTRYPOINT ["/bin/bash", "-lc", "ocp-indent"]
CMD ["--help"]
我不知道爲什麼它會如果'run'工程是必要的,但你試過指定爲'ocp-完整路徑indent'? – kichik
如何? '運行<路徑到ocp-indent.exe>'? – user1795832
是的。它可能在'/ bin'或'/ usr/bin'中。 – kichik