В Dockerfile, как вы его написали, происходят две вещи:
URL, имя пользователя и пароль зафиксированы на изображении.Любой, кто может получить изображение, может запустить docker history
и увидеть его в виде обычного текста.
Запуск контейнера не принимает никаких аргументов;он просто запускает одну команду с фиксированным набором аргументов.
Тем более что вы планируете передавать эти аргументы во время выполнения, я не стал бы пытаться включить их визображение.Я бы сократил Dockerfile до:
FROM ubuntu:18.04
RUN apt update \
&& DEBIAN_FRONTEND=noninteractive \
apt install --assume-yes --no-install-recommends \
curl
COPY register.sh /usr/bin
RUN chmod u+x /usr/bin/register.sh
ENTRYPOINT ["register.sh"]
Когда вы запустите его, Kubernetes args:
будет передан в качестве параметров командной строки в точку входа.(Это то же самое, что Docker Compose command:
и команда произвольной формы в конце простой команды docker run
.) Создание сценария в качестве точки входа контейнера приведет к тому, что ваш YAML Kubernetes будет работать так, как вы ожидаете.
В общем, я предпочитаю использовать CMD для ENTRYPOINT.(Помимо прочего, docker run --rm -it ... /bin/sh
облегчает отладку сборки вашего образа.) Если вы это сделаете, то Kubernetes args:
должен будет включить имя сценария, который он выполняет:
args: ["./register.sh", "someUrl", "someUser", "somePassword"]