implemented an more general digest approach

This commit is contained in:
Kevin Veen-Birkenbach 2023-11-16 13:15:15 +01:00
parent d61039d3a2
commit 7fdeb677de

View File

@ -21,18 +21,21 @@ def git_pull(directory):
else: else:
print("Repository is already up to date.") print("Repository is already up to date.")
def get_image_digests(): def get_image_digests(directory):
images_output = subprocess.check_output('docker-compose images --digests', shell=True).decode().strip() compose_project = os.path.basename(directory)
image_lines = images_output.splitlines() images_output = subprocess.check_output(
return {line.split()[0]: line.split()[2] for line in image_lines if line} f'docker images --format "{{{{.Repository}}}}:{{{{.Tag}}}}@{{{{.Digest}}}}" | grep {compose_project}',
shell=True
).decode().strip()
return dict(line.split('@') for line in images_output.splitlines() if line)
def update_docker(directory): def update_docker(directory):
print(f"Checking for updates to Docker images in {directory}.") print(f"Checking for updates to Docker images in {directory}.")
os.chdir(directory) os.chdir(directory)
before_digests = get_image_digests() before_digests = get_image_digests(directory)
print("Pulling docker images.") print("Pulling docker images.")
run_command("docker-compose pull") run_command("docker-compose pull")
after_digests = get_image_digests() after_digests = get_image_digests(directory)
if before_digests != after_digests: if before_digests != after_digests:
print("Changes detected in image digests. Rebuilding containers.") print("Changes detected in image digests. Rebuilding containers.")