У меня есть docker -компонентный файл со службой базы данных, который получает файл среды для пользователей и паролей (я удалил переменную env для пароля, так как проблема одинакова как для пользователя, так и для пароля):
db:
restart: always
container_name: db
image: mariadb:10.3.9
env_file:
- my_env_file.env
volumes:
- /opt/dbdata:/var/lib/mysql
healthcheck:
test: ["CMD", "mysql", "-u", "${DB_USER}", "-e", "\"SHOW DATABASES;\""]
interval: 1m
timeout: 10s
retries: 10
Файл среды содержит запись DB_USER:
DB_USER=TEST
При сборке и запуске контейнера с docker -compose переменная среды не может быть разрешена с помощью Docker, поскольку переменная существует только в контейнере db
, и я получаю следующее предупреждение:
WARNING: The DB_USER variable is not set. Defaulting to a blank string.
Есть ли способ указать Docker, чтобы избежать разрешения значение этой переменной env на хосте, но вместо этого разрешить его из моего контейнера?
I не хочу предоставлять переменную env на хосте из соображений безопасности.
Я также не хочу, чтобы использовал mysqladmin
, поскольку это может привести к ложным срабатываниям (например, проверка работоспособности может завершиться ошибкой, поскольку база данных еще не принимает соединения).