Предоставление настраиваемого аргумента (Порт) при сборке - PullRequest
0 голосов
/ 01 октября 2018


Я хочу докеризировать приложение NET Core.
Однако я не знаю, как предоставить port в качестве аргумента command-line для дальнейшего использования в Dockerfile, например:
ENTRYPOINT ["appname","[port_argument_from_commandline]"]".

Dockerfile

FROM microsoft/dotnet:latest AS base
WORKDIR /app
COPY ./bin/Release/netcoreapp2.1/publish /app
ENTRYPOINT [ "dotnet","DockerContainerDaemon.dll" ]
EXPOSE 20000   //how can i set this as a command-line argument?

Дополнительные пояснения : я хочу предоставить своему изображению настраиваемый аргумент, в нашем случае, скажем, port. Затем я хочу, чтобы при запуске экземпляра была установленаэтот аргумент со значением:

docker build myapp
// настроен на прием аргумента командной строки с именем port
docker run port=[instance port] myapp

Ответы [ 2 ]

0 голосов
/ 01 октября 2018

Вы можете использовать переменные времени сборки при запуске docker build:

 docker build --build-arg PORT=XXXX .

Внутри Dockerfile вы можете использовать эту настройку с ARG:

FROM microsoft/dotnet:latest AS base
ARG PORT # Supports a default, e.g. ARG PORT=5000
WORKDIR /app
COPY ./bin/Release/netcoreapp2.1/publish /app
ENTRYPOINT [ "dotnet","DockerContainerDaemon.dll" ]
EXPOSE $PORT # Use $PORT here
0 голосов
/ 01 октября 2018

Обратите внимание, что инструкция EXPOSE фактически не предоставляет порт, но работает как документация между записывающим файлом dockerfile и пользователем.Источник здесь

Чтобы открыть порт, вам нужно передать следующую опцию в командную строку

-p hostPort: containerPort

Так что в вашем примере это может выглядеть так:

-p 8080: 20000

Вся команда может выглядеть как

запуск докера -ti -p 8080: 20000 имя_образа

запуск докера -ti -p 8081: 20000 имя_объекта

запуск докера -ti -p 8082: 20000 имя_изображения

Это будет работать правильно и позволит вам подключить 3 экземпляра одновременно.

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