Как запустить mysqld, а затем сразу запустить запрос из командной строки? - PullRequest
1 голос
/ 09 февраля 2020

Я пытаюсь выполнить запрос "один раз" mysql на mysql docker контейнере, который не запущен.

docker-compose \
  run --rm db \
  mysqld & mysql my-db-name -e "SELECT *"

это на самом деле не работает, потому что это не так ожидание запуска mysqld.

1 Ответ

2 голосов
/ 09 февраля 2020

Здесь нет никаких быстрых клавиш: вам нужно запустить базу данных, подождать, пока она будет готова, сделать запрос и затем закрыть базу данных.

Однако вам не нужно делать запрос конкретно из контейнера базы данных. Похоже, у вас уже есть блок в файле docker-compose.yml для запуска базы данных, поэтому вы можете

# Start the database
docker-compose up -d db

# Try to connect to the database
mysql -h 127.0.0.1 -e 'SELECT 1;'
# Repeat until successful, usually 30-60 seconds

# Make your actual query
mysql -h 127.0.0.1 my-db-name -e "SELECT *"

# Stop the database
docker-compose down db

Это именно то, что вам нужно сделать, если база данных не была в Docker также (замените docker-compose команды на /etc/init.d/mysql команды). Docker не делает это проще или сложнее, просто отличается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...