Как передать аргументы приложения через docker compose
Я только начинаю работать с контейнерами docker
У меня в dotnet приложение необходимо передать множество аргументов, для того чтобы сконфигурировать его, и сделать это необходимо через docker compose, но у меня не особо получается
часть docker-compose файла:
scheduleservice:
image: # link to dockerhub repos
container_name: scheduleservice
restart: always
environment:
- TZ=Asia/Yekaterinburg
# *пробовал сюда писать аргументы, но приложение их не видит*
# сделал отдельно Dockerfile (что считаю не правильным решением), но и оно не помогло
build:
context: .
args:
# здесь писал аргументы, но как сказал ранее, тут их приложение тоже не видело
ports:
- 5000:80
Также вот пример Dockerfile, который я написал
FROM #link to dockerhub repos
ARG arg1
ENV arg1 $arg1
И вот пример кода на C#, которым я пытался отловить аргументы
public static void Main(string[] args)
{
foreach(var arg in args)
{
Console.WriteLine(arg);
}
}
Ответы (2 шт):
Разобрался в данном вопросе, для того чтобы передать аргументы в приложение через docker compose file необходимо прописать их в поле command
Пример:
scheduleservice:
image: # link to dockerhub repos
container_name: scheduleservice
restart: always
environment:
- TZ=Asia/Yekaterinburg
command:
# здесь прописывать аргументы, в любом формате, строчка полностью передаётся в аргумент
sheetid=isdoif3asdkl456
ports:
- 5000:80
В своем вопросе вы путаете переменные командной строки и параметры окружения.
Как передать переменную в командной строке уже ответили. В вашем тексте TZ это переменная окружения. Ее так же можно использовать. через GetEnvironmentVariable.
public static void Main(string[] args)
{
tz= Environment.GetEnvironmentVariable("TZ");
Console.WriteLine(tz);
}