Переменные окружения Dockerfile snafoo - PullRequest
0 голосов
/ 10 февраля 2020

У меня есть следующий Dockerfile

FROM openjdk:8-jdk-alpine
RUN mkdir -p ./webpieces
COPY . ./webpieces/
COPY config/logback.cloudrun.xml ./webpieces/config/logback.xml
ENV PORT=8080
WORKDIR "/webpieces"
ENTRYPOINT ["./bin/authservice", "-http.port=:$PORT", "-hibernate.persistenceunit=production"]

, однако строка $ PORT заканчивается в моем приложении, а не в 8080. Я также пробовал командную строку, но безрезультатно. есть идеи, что здесь происходит?

Я имею в виду, что я запускаю свое приложение с

docker run --env PORT=8080 -p 127.0.0.1:8080:8080 gcr.io/orderly-gcp/authservice

, и при запуске оно говорит:

-http.port following usages:
    (optional, default: :8080)Http host&port.  syntax: {host}:{port} or just :{port} to bind to all NIC ips on that host
            Value Parsed::$PORT foundKey:true foundValue:true

Обычно анализируемая часть будет скажем: 8080 если я привязан ко всем портам. Это прекрасно работает, если я жестко закодировал: 8080 вместо: $ PORT или: $ {PORT}. Я не вижу, чтобы заставить переменные работать.

спасибо, Дин

1 Ответ

1 голос
/ 10 февраля 2020

Рассмотрим следующий DockerFile:

from ubuntu

ENV PORT=8080

ENTRYPOINT ["/bin/echo", "$PORT"]

Это выведет «$ PORT», поскольку переменные среды не раскрываются при использовании синтаксиса массива ENTRYPOINT. Вместо этого вы можете использовать синтаксис без массивов, например, так:

from ubuntu

ENV PORT=8080

ENTRYPOINT /bin/echo $PORT

Это напечатает '8080'.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...