延迟厨师,直到一个资源完成其任务

我有一个厨师的食谱,带来了一个mysql码头容器,然后,如果一些逻辑通过,连接到它加载一些数据库条目。延迟厨师,直到一个资源完成其任务

问题是,它首次运行失败,因为它会继续执行负责还原数据的资源,在mysql容器启动并准备好接受连接之前。

下面是容器的带来的食谱的一部分:

docker_container 'imhere-mysql' do 

hostname mysqlHost

repo 'lutraman/imhere'

tag 'mysql'

env ["MYSQL_ROOT_PASSWORD=#{mysql_password}"]

volumes [ '/var/imhere/mysql:/var/lib/mysql' ]

action :run

end

这里是做了部分的恢复:

remote_file "#{parent_data_dir}/#{db_restore_filename}" do 

source "#{db_restore_url}/#{db_restore_filename}"

notifies :run, 'execute[mysql_load_dump]'

end

execute "mysql_load_dump" do

command "#{scripts_dir}/mysql_restore_dump.sh"

environment(

'MYSQL_HOSTNAME' => mysqlHost,

'PARENT_DATA_DIR' => parent_data_dir,

'DB_RESTORE_FILENAME' => db_restore_filename,

'MYSQL_PASSWORD' => mysql_password,

'RETRIES' => "10"

)

action :nothing

end

这是不太相关,但只是为了完整性,这里是脚本最终执行的内容:

MYSQL_IP_ADDRESS=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $MYSQL_HOSTNAME) 

gunzip -c $PARENT_DATA_DIR/$DB_RESTORE_FILENAME | \

mysql -h $MYSQL_IP_ADDRESS -D imhere -u root -p"$MYSQL_PASSWORD"

正如你所看到的,我有点破解了p所以它会做几次重试,但这只会引入竞争条件。如何告诉厨师阻止docker_container资源,直到容器完全准备就绪?

回答:

资源已完成,问题在于docker run本身不是阻塞进程。您可能需要使用ruby_block资源和一些Ruby代码来休眠,直到容器实际启动并且服务器进程正在接受连接。

回答:

我不确定资源是否已完成coderanger说。

您是否尝试通过两种资源的转储操作? :

docker_container 'imhere-mysql' do 

hostname mysqlHost

repo 'lutraman/imhere'

tag 'mysql'

env ["MYSQL_ROOT_PASSWORD=#{mysql_password}"]

volumes [ '/var/imhere/mysql:/var/lib/mysql' ]

notifies :run, 'execute[mysql_load_dump]', :delayed

action :run

end

remote_file "#{parent_data_dir}/#{db_restore_filename}" do

source "#{db_restore_url}/#{db_restore_filename}"

notifies :run, 'execute[mysql_load_dump]', :delayed

end

execute "mysql_load_dump" do

command "#{scripts_dir}/mysql_restore_dump.sh"

environment(

'MYSQL_HOSTNAME' => mysqlHost,

'PARENT_DATA_DIR' => parent_data_dir,

'DB_RESTORE_FILENAME' => db_restore_filename,

'MYSQL_PASSWORD' => mysql_password,

'RETRIES' => "10"

)

action :nothing

end

以上是 延迟厨师,直到一个资源完成其任务 的全部内容, 来源链接: utcz.com/qa/265405.html

回到顶部