Это не работает:
FROM alpine:3.7
# build argument with default value
ARG PING_HOST=localhost
# environment variable with same value
ENV PING_HOST=${PING_HOST}
# act as executable
ENTRYPOINT ["/bin/ping"]
# default command
CMD ["${PING_HOST}"]
Должна быть возможность создать образ с помощью build-arg и запустить контейнер с переменной окружения, чтобы также переопределить cmd.
docker build -t ping-image .
docker run -it --rm ping-image
Ошибка: ping: неверный адрес '$ {PING_HOST}'
UPDATE:
FROM alpine:3.7
# build argument with default value
ARG PING_HOST=localhost
# environment variable with same value
ENV PING_HOST ${PING_HOST}
COPY ./entrypoint.sh /usr/local/bin/
# act as executable
ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
# default command
CMD $PING_HOST
entrypoint.sh
#!/bin/sh
/bin/ping $PING_HOST
Это работает, потому что entrypoint.sh включает подстановку переменных, как и ожидалось.