From 1c48df82a2e9aac4681d460ce36b39b7af9e62ca Mon Sep 17 00:00:00 2001 From: Lun-Kai Hsu Date: Wed, 23 May 2018 17:13:31 -0700 Subject: [PATCH] build_image.py waiting for docker daemon (#864) * add waiting for docker daemon * fix log --- components/build_image.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/components/build_image.py b/components/build_image.py index 7993143c523..225518395da 100644 --- a/components/build_image.py +++ b/components/build_image.py @@ -59,6 +59,22 @@ def run(command, cwd=None, env=None, polling_interval=datetime.timedelta(seconds return "\n".join(output) +def wait_for_docker_daemon(timeout=60): + """Waiting for docker daemon to be ready. This is needed in DinD scenario.""" + start_time = time.time() + while time.time() - start_time < timeout: + try: + subprocess.check_call(["docker", "ps"]) + except subprocess.CalledProcessError: + time.sleep(5) + # Daemon ready. + logging.info("docker daemon ready.\n") + return + # Timeout. + logging.error("Timeout waiting for docker daemon\n") + # TODO(lunkai): use TimeoutError when we use py3. + raise RuntimeError + def get_build_args(config): """ Make the list of params for docker build from config. @@ -78,6 +94,7 @@ def get_config(context_dir, version): return config def build_tf_serving(args): + wait_for_docker_daemon() dir_path = os.path.dirname(os.path.realpath(__file__)) context_dir = os.path.join(dir_path, "k8s-model-server/images") version = args.tf_version if args.platform == "cpu" else args.tf_version + "gpu" @@ -97,6 +114,7 @@ def build_tf_serving(args): run(["gcloud", "docker", "--", "push", image_name]) def build_tf_notebook(args): + wait_for_docker_daemon() dir_path = os.path.dirname(os.path.realpath(__file__)) context_dir = os.path.join(dir_path, "tensorflow-notebook-image") version = args.tf_version if args.platform == "cpu" else args.tf_version + "gpu"