diff --git a/apps/docker/src/docker_deployer.erl b/apps/docker/src/docker_deployer.erl index 3ab24b2..ae8fa78 100644 --- a/apps/docker/src/docker_deployer.erl +++ b/apps/docker/src/docker_deployer.erl @@ -122,11 +122,17 @@ ensure_container_absent(TaskId, ContainerName) when is_integer(TaskId), is_binar ensure_image_ready(TaskId, Image0) when is_integer(TaskId), is_binary(Image0) -> Image = normalize_image(Image0), report_task_event(TaskId, <<"info">>, <<"使用镜像:"/utf8, Image/binary>>), - report_task_event(TaskId, <<"info">>, <<"开始拉取镜像:"/utf8, Image/binary>>), - case docker_commands:pull_image(Image) of - {ok, Ref, Pid, MRef} -> - await_pull_image(TaskId, Ref, Pid, MRef), - {ok, Image} + case docker_commands:check_image_exist(Image) of + true -> + report_task_event(TaskId, <<"info">>, <<"本地镜像已存在,跳过拉取:"/utf8, Image/binary>>), + {ok, Image}; + false -> + report_task_event(TaskId, <<"info">>, <<"开始拉取镜像:"/utf8, Image/binary>>), + case docker_commands:pull_image(Image) of + {ok, Ref, Pid, MRef} -> + await_pull_image(TaskId, Ref, Pid, MRef), + {ok, Image} + end end. -spec await_pull_image(TaskId :: integer(), Ref :: reference(), Pid :: pid(), MRef :: reference()) -> ok.