Я пытаюсь выполнить в контейнер с exec_run, но не работает

Я пытаюсь выполнить 4 команды в контейнер (у него есть база данных mysql), но если я делаю это в другой работе терминала, но если создать контейнер и затем выполнить команды, он не работает. У меня есть этот код: этот код создает контейнер, но не выполняет команды 1,2, 3 и 4.

import docker
from docker.types import Mount
from threading import Thread

client = docker.DockerClient(base_url='unix://var/run/docker.sock')

container= client.containers.run(
 "python_base_image:v02",
 detach=True,
 name='201802750001M04',
 ports={'3306/tcp': None, '80/tcp': None},
 mounts= 
  [Mount("/var/lib/mysql","201802750001M04_backup_db",type='volume')]
)

command1 = "sed -i '/bind/s/^/#/g' /etc/mysql/my.cnf"
command2 = "mysql --user="root" --password="temprootpass" -- 
execute="GRANT ALL PRIVILEGES ON . TO 'macripco'@'172.17.0.1' 
IDENTIFIED BY '12345';""
command3 = "mysql --user="root" --password="temprootpass" -- 
execute="GRANT ALL PRIVILEGES ON . TO 'macripco'@'localhost' 
IDENTIFIED BY '12345';""
command4 = "sudo /etc/init.d/mysql restart"

a = container.exec_run(command1,detach=False,stream=True,stderr=True, 
 stdout=True)
b = container.exec_run(command2,detach=False,stream=True,stderr=True, 
 stdout=True)
c = container.exec_run(command3,detach=False,stream=True,stderr=True, 
 stdout=True)
d = container.exec_run(command4,detach=False,stream=True,stderr=True, 
 stdout=True)`

Но если я выполню команды позже (в другом терминале), когда контейнер будет создан, это сработает. Мне нужно создавать и выполнять команды вместе.

Благодарю.

1 ответ

Это была проблема с выполнением времени, которая была решена с помощью time.sleep(10) между двумя выполнениями, после создания контейнера и перед exec_run

Другие вопросы по тегам