При запуске контейнера Docker любые аргументы, указанные вами в командной строке, будут перезаписаны в CMD
.
Из документации CMD
:
В Dockerfile может быть только одна инструкция CMD. Если вы укажете более одного CMD, то вступит в силу только последний CMD.
Основная цель CMD - предоставить значения по умолчанию для исполняющего контейнера. Эти значения по умолчанию могут включать исполняемый файл или могут не включать исполняемый файл, и в этом случае вы также должны указать инструкцию ENTRYPOINT.
Чтобы настроить сервер так, как вы пытаетесь это сделать CMD
, вы можете создать сценарий оболочки для запуска setup и запустить его в ENTRYPOINT
.
создать файл с некоторым именем, скажем, setup_server.sh
, с содержанием:
#!/usr/bin/env bash
doctl auth init -t ${DIGITALOCEAN_ACCESS_TOKEN}
doctl kubernetes cluster kubeconfig save ${K8S_CLUSTER}
kubectl get svc
argocd login ${ARGO_SERVER} --username ${ARGO_USERNAME} --password ${ARGO_PW} --grpc-web
argocd context
argocd repo list
"$@"
Скопируйте этот файл в Dockerfile:
COPY setup_server.sh /usr/local/bin
И измените ваш ENTRYPOINT
для запуска setup_server.sh
до /usr/local/bin/argocd
:
ENTRYPOINT setup_server.sh /usr/local/bin/argocd
(все непроверенные)