Как запустить mysqld, а затем сразу запустить запрос из командной строки?

Я пытаюсь выполнить запрос «один раз» mysql на контейнере Docker MySQL, который не работает.

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

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

Всего 1 ответ


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

Однако вам не нужно делать запрос именно из контейнера базы данных. Похоже, у вас уже есть блок в файле 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 ). Докер не делает это проще или сложнее, просто отличается.


Есть идеи?

10000