Как передать аргументы командной строки в dotnet dll в образе Docker во время выполнения? - PullRequest
0 голосов
/ 12 февраля 2019

Работа над моим первым изображением Docker.Это программа dotnet, которая использует CMD для запуска (только одна CMD разрешена в Docker).Я хотел бы передать программе аргумент (ключ API) во время выполнения.После некоторого поиска, не найдя четкого ответа.Точка входа не кажется полезной.Может быть, ENV, но, кажется, ENV только для Docker.Мой Dockerfile:

FROM microsoft/dotnet
WORKDIR /app
COPY . /app
CMD [ "dotnet",  "/app/netcore/Somename.dll"]

Спасибо

1 Ответ

0 голосов
/ 12 февраля 2019

Docker объединяет ENTRYPOINT и CMD в одну командную строку, если оба используют нотацию JSON , как в вашем примере.

Это нотация JSON: CMD [ "dotnet", "/app/netcore/Somename.dll"]

Это обозначение оболочки: CMD dotnet /app/netcore/Somename.dll

Еще одна вещь, которую вам нужно знать - что написано в docker run ... <image_name> ... после - рассматривается как CMD.

Итак, в заключение.

  1. Постоянная (неизменяемая) часть командной строки, например dotnet foo.dll, которую можно ввести в ENTRYPOINT.

  2. Переменная часть, напримердополнительные аргументы, вы вводите с docker run и опционально устанавливаете значения по умолчанию CMD в Dockerfile

Пример:

Dockerfile

...
ENTRYPOINT ["dotnet", "/app/netcore/Somename.dll"]
CMD ["--help"]

Командная строка 1:

docker run ... <your image name> --environment=Staging --port=8080 

В результате dotnet /app/netcore/Somename.dll --environment=Staging --port=8080

Командная строка 2:

docker run ... <your image name>

В результате dotnet /app/netcore/Somename.dll --help.--help исходит из значения по умолчанию, определенного в Dockerfile.

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