Есть ли какой-либо способ использовать переменную .env в файле makefile?

#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, в той степени, в какой теперь работает цель. Так что это … странно. Может быть, в игре есть какой-то кэш. В любом случае, я отмечу ваш ответ как принятый.