Работа docker compose с файлами переменных окружения
После изменения конфигурации нужно пересоздать контейнер, для чего делать не просто "docker compose start", а "docker compose up".
docker compose по умолчанию читает файл .env, который находится в том же директории, что и compose.yaml. Переменные окружения из этого файла доступны в файле compose.yaml.
Например:
services:
telebot:
image: ${IMAGE_NAME}
Здесь переменная ${IMAGE_NAME} определена в .env файле.
можно передать переменные окружения из файла в compose.yaml при помощи ключа --env-file.
Например:
docker compose --env-file=tokens.env up -d
Передать файл переменных окружения в контейнер можно в файле compose.yaml.
Например:
services:
telebot:
image: ${IMAGE_NAME}
build:
context: app
dockerfile: Dockerfile
env_file: "./tokens.env"
Или несколько файлов:
services:
telebot:
image: ${IMAGE_NAME}
build:
context: app
dockerfile: Dockerfile
env_file:
- "./tokens.env"
- "./.container.env"
Мне нравится способ 5), т.к:
Не нужно перечислять перемнные окружения в файле compose.yaml
Можно иметь несколько файлов переменных окружения. Например общий файл и файл с секретами.
Секреты можно передавать и по другому, еще более секретно, как описано в https://docs.docker.com/compose/use-secrets/, но я не пробовал.