#laravel #docker #docker-compose #mariadb
Вопрос:
Я начал новый проект с использованием docker-compose, однако мои миграции и запросы к базе данных выходят из строя с ошибкой Access denied for user 'data-jobs'@'172.18.0.3' (using password: YES)
У меня есть 2 файла конфигурации. .env
для моей конфигурации laravel и .db.env
для переменных среды моей базы данных. Я получил эту ошибку, потому что я изменил значение в файле .env, но не в файле .db.env.
Мой вопрос заключается в следующем:
Как я могу использовать can I pass MYSQL_PASSWORD
и DB_PASSWORD
для Laravel и MariaDB, используя только один конфигурационный ключ, чтобы я снова не допустил эту ошибку?
Ответ №1:
Ваши имена переменных env неверны, образ mysql Docker использует разные ключи.
MYSQL_USER
MYSQL_DATABASE
....
https://hub.docker.com/_/mariadb
https://hub.docker.com/_/mysql
(MariaDB в качестве замены для ввода использует те же ключи.)
Если вы хотите использовать свои пользовательские ключи, вам нужно сопоставить их в окне настройки-compose.yml:
db-data-jobs:
image: mariadb:10.6
container_name: db-data-jobs
restart: unless-stopped
tty: true
env_file:
- .db.env
volumes:
- db-data:/var/lib/mysql
- type: bind
source: /etc/localtime
target: /etc/localtime
ports:
- '3307:3306'
networks:
- app-net
environment:
- MYSQL_USER=${DB_USERNAME}
https://docs.docker.com/compose/environment-variables/
Убедитесь, что вы не искажаете имена ваших файлов: .env
и .db.env
.
Комментарии:
1. Привет, спасибо за ответ, вы заставили меня найти ошибку, которая заключалась в том, что мой пароль
.db.env
не совпадал с тем, что было в.env
файле. Однако .db.env-это еще один файл в моем каталоге, специально предназначенный для ключей среды mysql. Чтобы они не были включены в систему управления версиями и могли иметь разные разрешения. Я использую0660
.2. Теперь я обновил свой вопрос, чтобы посмотреть, сможем ли мы найти способ предотвратить повторение этой ошибки.
3. @Бен ты полностью изменил свой вопрос. Но на ваш вопрос все равно дан ответ: Используйте сопоставление и/или несколько файлов .env, как описано в docs.docker.com/compose/environment-variables
4. Когда я поставил a
-
перед переменной окружения в файле компоновки, я получил сообщение об ошибке, что это не строка. Удаление-
исправило ошибку, и сервис работает отлично.5. @Бен ах, вы правы, синтаксис не
- MYSQL_USER: ...
такой, но- MYSQL_USER=...
! Рад, что это сработало для вас!