Il s'agit d'un problème et d'un profil liés à PATH. Lorsque vous utilisez sh -c
ou bash -c
les fichiers de profil ne sont pas chargés. Mais lorsque vous utilisez bash -lc
cela signifie charger le profil et également exécuter la commande. Votre profil peut maintenant avoir la configuration de chemin nécessaire pour exécuter cette commande.
Modifier-1
Donc la question avec la réponse initiale est que cela ne fonctionne pas. Lorsque nous avons eu
ENTRYPOINT ["/bin/bash", "-lc", "ocp-indent"]
CMD ["--help"]
Il traduit enfin /bin/bash -lc ocp-indent --help
tout pour que cela fonctionne, nous devons /bin/bash -lc "ocp-indent --help"
. Cela ne peut pas être fait directement en utilisant la commande dans entrypoint. Nous devons donc faire un nouveau fichier entrypoint.sh
#!/bin/sh -l
ocp-indent "[email protected]"
Assurez-vous de chmod +x entrypoint.sh
sur l'hôte. Et mettre à jour le Dockerfile au-dessous
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"]
Après la construction et l'exécuter fonctionne
$ docker run f76dda33092a
NAME
ocp-indent - Automatic indentation of OCaml source files
SYNOPSIS
réponse originale
Vous pouvez facilement tester la différence entre les deux à l'aide des commandes ci-dessous
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
Maintenant, soit vous bash a cor chemin rectiligne par défaut ou il ne viendra que lorsque vous utiliserez le drapeau -l
. Dans ce cas, vous pouvez modifier le shell par défaut de votre image ci-dessous docker à
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"]
Je ne sais pas pourquoi il serait nécessaire si 'des œuvres run', mais avez-vous essayé spécifier un chemin complet' ocp- indent'? – kichik
Comment? 'Exécuter'? –
user1795832
Ouais. C'est probablement dans '/ bin' ou'/usr/bin'. – kichik