本文整理汇总了Python中docker.client.Client.wait方法的典型用法代码示例。如果您正苦于以下问题:Python Client.wait方法的具体用法?Python Client.wait怎么用?Python Client.wait使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类docker.client.Client
的用法示例。
在下文中一共展示了Client.wait方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: _run_build
# 需要导入模块: from docker.client import Client [as 别名]
# 或者: from docker.client.Client import wait [as 别名]
def _run_build(build):
"""
The REPOSITORY_DIR will contain a directory for each Project
instance.
Each Project instance directory will have a directory called "clone"
which is the master clone. Then, each time a build is queued, we
create a local clone from that repository named after the current
build's commit sha.
REPOSITORY_DIR/
django/
clone/
a18bc/
.../
Once the local clone is created, we build the docker image, create
the container and run the tests.
"""
project = build.project
# docker client
c = Client(build.host)
project_dir = os.path.join(REPOSITORY_DIR, project.slug)
main_repo_path = os.path.join(project_dir, 'clone')
if not os.path.exists(main_repo_path):
# assert project repo present
os.makedirs(project_dir)
# clone repo
repo = Repo.clone_from(project.repository, main_repo_path)
else:
repo = Repo(main_repo_path)
remote = repo.remote()
remote.pull()
# build_path is a local clone of the project and it's named after the
# current build's commit sha
build_path = os.path.join(project_dir, build.commit_sha)
if not os.path.exists(build_path):
repo = Repo.clone_from(main_repo_path, build_path)
else:
repo = Repo(build_path)
g = repo.git
g.checkout(build.commit_sha)
image_name = ':'.join([project.slug, build.commit_sha])
img_id, res = c.build(build_path)
# create image
c.tag(img_id, repository=project.slug, tag=build.commit_sha)
# run build command from new image and report output
container = c.create_container(image_name, project.build_command,
stdin_open=True, tty=True)
container_id = container.get('Id')
c.start(container_id)
return_code = c.wait(container_id)
out = c.logs(container_id)
build.result = out
build.return_code = return_code
build.save()