From a17d05cbd128985eeca4b64d871e34811c38e5c4 Mon Sep 17 00:00:00 2001 From: Fumiaki MATSUSHIMA Date: Wed, 18 Oct 2017 11:57:19 +0900 Subject: [PATCH 1/2] Wait until yaichi container is appeared in docker ps --- conf/nginx.conf | 4 ++-- hook/index.rb | 4 ++-- hook/proxy.rb | 4 ++-- mrbgem/mrblib/docker.rb | 20 ++++++++++++++++++-- 4 files changed, 24 insertions(+), 8 deletions(-) diff --git a/conf/nginx.conf b/conf/nginx.conf index 301aea1..788ec73 100644 --- a/conf/nginx.conf +++ b/conf/nginx.conf @@ -15,7 +15,7 @@ http { mruby_server_context_handler_code ' s = Nginx::Server.new - Docker::Container.me.exposed_ports.map(&:last).each do |port| + Docker::Container.me!.exposed_ports.map(&:last).each do |port| s.add_listener({address: port.to_s}) end '; @@ -35,7 +35,7 @@ http { mruby_server_context_handler_code ' s = Nginx::Server.new - Docker::Container.me.exposed_ports.map(&:last).each do |port| + Docker::Container.me!.exposed_ports.map(&:last).each do |port| s.add_listener({address: port.to_s}) end '; diff --git a/hook/index.rb b/hook/index.rb index 0eecc30..214fb50 100644 --- a/hook/index.rb +++ b/hook/index.rb @@ -2,7 +2,7 @@ r.content_type = "text/html" Docker::Container.expire_cache! -me = Docker::Container.me +me = Docker::Container.me! containers = Docker::Container.all - [me] not_connected_networks = (containers.flat_map(&:networks) - me.networks) @@ -11,7 +11,7 @@ end if not_connected_networks.any? Docker::Container.expire_cache! - me = Docker::Container.me + me = Docker::Container.me! containers = Docker::Container.all - [me] end containers = containers.sort_by(&:name) diff --git a/hook/proxy.rb b/hook/proxy.rb index 7ac975d..949707e 100644 --- a/hook/proxy.rb +++ b/hook/proxy.rb @@ -1,6 +1,6 @@ r = Nginx::Request.new c = Nginx::Connection.new -me = Docker::Container.me +me = Docker::Container.me! if container = Docker::Container.find_by_fqdn(r.hostname) not_connected_networks = (container.networks - me.networks) @@ -9,7 +9,7 @@ end if not_connected_networks.any? Docker::Container.expire_cache! - me = Docker::Container.me + me = Docker::Container.me! container = Docker::Container.find_by_fqdn(r.hostname) end diff --git a/mrbgem/mrblib/docker.rb b/mrbgem/mrblib/docker.rb index 24f3aa1..888a776 100644 --- a/mrbgem/mrblib/docker.rb +++ b/mrbgem/mrblib/docker.rb @@ -24,6 +24,8 @@ def connect(container) end class Container + class NotFound < StandardError; end + class << self def all @all ||= begin @@ -39,8 +41,16 @@ def my_id @my_id ||= `hostname`.chomp end - def me - all.find {|c| c.id.start_with?(my_id) } + def me!(timeout_sec = 3) + return me if me + + timeout_sec.times do + sleep 1 + expire_cache! + return me if me + end + + raise NotFound end def find_by_fqdn(fqdn) @@ -50,6 +60,12 @@ def find_by_fqdn(fqdn) def expire_cache! @all = nil end + + private + + def me + all.find {|c| c.id.start_with?(my_id) } + end end include Identifiable From 721ecea845e8375792fe990a5acd0441535e749c Mon Sep 17 00:00:00 2001 From: Fumiaki MATSUSHIMA Date: Wed, 18 Oct 2017 11:59:26 +0900 Subject: [PATCH 2/2] Bump docker version on CI --- circle.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/circle.yml b/circle.yml index 8b0e72a..c7a6805 100644 --- a/circle.yml +++ b/circle.yml @@ -7,7 +7,7 @@ jobs: steps: - checkout - setup_remote_docker: - version: 17.06.0-ce + version: 17.07.0-ce - run: | rm docker-compose.override.yml bin/test