Chcę utworzyć obraz Docker, który działa jako plik wykonywalny, dla którego użytkownik przekazuje token jako zmienną środowiskową. Plik wykonywalny ma polecenia podrzędne, które użytkownik powinien przekazać za pośrednictwem dokerów CMD (pomyśl o git z uwierzytelnianiem za pomocą Env). Jednak Docker nie dołącza CMD do punktu wejścia. Odpowiednia część mojego Dockerfile wygląda następująco:Kontener dokowany z rozszerzeniem zmiennoprzecinkowym i parametrami CMD
ENTRYPOINT ["/bin/sh", "-c", "/usr/bin/mycmd --token=$MY_TOKEN"]
CMD ["pull", "stuff"]
Więc jeśli ten pojemnik jest wykonywany bez nadpisania CMD i secret
jako zmienną MY_TOKEN, spodziewam
mycmd --token=secret pull stuff
być wykonywany. Jeśli użytkownik uruchomi kontener z pominięciem, np.
docker run -it -e MY_TOKEN=secret myimage push junk
spodziewałbym
mycmd --token=secret push junk
być wykonywany. Jak wspomniano powyżej, tylko wykonanie mycmd --token=secret
zostaje wykonane, CMD jest ignorowana - bez względu na to, czy przesłonię ją podczas uruchamiania, czy ustawię w pliku Docker.
czy wypróbowałeś 'dokowanie uruchom -to -e MY_TOKEN = secret myimage" push junk "'? – user2915097
tak, to też nie działa. Nie wyjaśniłoby to również, dlaczego nie działa "bez" przesłonięcia CMD w uruchamianiu dockera – feob
spróbuj zmienić swoją CMD w pliku Dockerfold za pomocą 'CMD [" sh "," -c "," pull "," stuff "]' , odtwórz obraz i ponownie przetestuj – user2915097