#docker #makefile #environment-variables
#докер #сделать файл #переменные среды
Вопрос:
У меня есть тестовый конвейер, настроенный в контейнере docker. Переменные искусственной среды передаются в среду с помощью файла .env.
В моем файле .env у меня есть эта строка:
MYSQL_ROOT_PASSWORD=dbpassword
В моем файле Makefile у меня есть следующие строки:
test-db: echo "create database dbname_test" | mysql -u root -h database -p${MYSQL_ROOT_PASSWORD}
Это не работает, так как при запуске тестового конвейера я получаю следующий вывод:
ERROR 2002 (HY000): Can't connect to MySQL server on 'database' (115) make: *** [Makefile:10: test-db] Error 1
Есть ли способ получить доступ к значениям в моем файле .env в моем файле makefile?
Комментарии:
1. Было бы легче помочь, если бы (а) вы включили вызов командной строки make, который вызвал эту ошибку (например, является ли проблема
MYSQL_ROOT_PASSWORD
пустой? Или что-то еще?) и (б) вы использовали форматирование блока кода для ошибок вместо цитирования текста: последнее обертывает, что затрудняет чтение ошибок.
Ответ №1:
Может быть, вам следует добавить пробел между -p
и ${MYSQL_ROOT_PASSWORD}
echo "create database dbname_test" | mysql -u root -h database -p ${MYSQL_ROOT_PASSWORD}
Комментарии:
1. Спасибо! Добавление пробела заставило mysql запросить пароль, но, как ни странно, удаление пробела снова, казалось, подтолкнуло память Make, в той степени, в какой теперь работает цель. Так что это … странно. Может быть, в игре есть какой-то кэш. В любом случае, я отмечу ваш ответ как принятый.