Переменные окружения Dockerfile snafoo

У меня есть следующий 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

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

спасибо, Дин

Всего 1 ответ


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

from ubuntu

ENV PORT=8080

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

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

from ubuntu

ENV PORT=8080

ENTRYPOINT /bin/echo $PORT

Это печатает «8080».


Есть идеи?

10000