ENTRYPOINT и CMD с аргументами сборки - PullRequest
0 голосов
/ 29 июня 2018

Это не работает:

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 включает подстановку переменных, как и ожидалось.

1 Ответ

0 голосов
/ 29 июня 2018

Чтобы CMD расширял переменные, вам нужно организовать оболочку, потому что оболочка отвечает за расширение переменных среды, а не Docker. Вы можете сделать это так:

ENTRYPOINT ["/bin/sh"]
CMD ["-c" , "ping ${PING_HOST}"]

ИЛИ

CMD ["sh", "-c", "ping ${PING_HOST}"]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...