- add: helm chart
- add: python script for building and pushing the containers
This commit is contained in:
72
scripts/build_and_push.py
Normal file
72
scripts/build_and_push.py
Normal file
@@ -0,0 +1,72 @@
|
||||
import subprocess
|
||||
import os
|
||||
|
||||
# Define your images, tags, and Dockerfile paths
|
||||
images = ["api-service", "auth-service", "character-service", "database-service", "packet-service", "session-service", "world-service"]
|
||||
dockerfile_paths = [
|
||||
"../api-service/Dockerfile",
|
||||
"../auth-service/Dockerfile",
|
||||
"../character-service/Dockerfile",
|
||||
"../database-service/Dockerfile",
|
||||
"../packet-service/Dockerfile",
|
||||
"../session-service/Dockerfile",
|
||||
"../world-service/Dockerfile",
|
||||
]
|
||||
|
||||
common_tag = "latest"
|
||||
version_tag = "v0.1.0"
|
||||
image_tag_prefix = "gitea.azgstudio.com/raven/"
|
||||
build_context = "../"
|
||||
|
||||
def run_command(command):
|
||||
"""Run a shell command and handle errors."""
|
||||
try:
|
||||
subprocess.run(command, check=True)
|
||||
except subprocess.CalledProcessError as e:
|
||||
print(f"Error: Command '{' '.join(command)}' failed with exit code {e.returncode}")
|
||||
exit(1)
|
||||
|
||||
|
||||
def build_images(images, dockerfile_paths, common_tag, version_tag, image_tag_prefix, build_context):
|
||||
"""Build all Docker images."""
|
||||
for image, dockerfile_path in zip(images, dockerfile_paths):
|
||||
# Add the prefix to the image name
|
||||
full_image_name = f"{image_tag_prefix}{image}"
|
||||
|
||||
# Build the image with both tags
|
||||
print(f"Building {full_image_name}:{version_tag} and {full_image_name}:{common_tag} using Dockerfile at {dockerfile_path}...")
|
||||
run_command([
|
||||
"docker", "build",
|
||||
"-t", f"{full_image_name}:{version_tag}",
|
||||
"-t", f"{full_image_name}:{common_tag}",
|
||||
"-f", dockerfile_path,
|
||||
build_context
|
||||
])
|
||||
|
||||
|
||||
def push_images(images, common_tag, version_tag, image_tag_prefix):
|
||||
"""Push all Docker images."""
|
||||
for image in images:
|
||||
# Add the prefix to the image name
|
||||
full_image_name = f"{image_tag_prefix}{image}"
|
||||
|
||||
# Push both tags
|
||||
print(f"Pushing {full_image_name}:{version_tag}...")
|
||||
run_command(["docker", "push", f"{full_image_name}:{version_tag}"])
|
||||
|
||||
print(f"Pushing {full_image_name}:{common_tag}...")
|
||||
run_command(["docker", "push", f"{full_image_name}:{common_tag}"])
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
script_dir = os.path.dirname(os.path.abspath(__file__))
|
||||
os.chdir(script_dir)
|
||||
|
||||
# Build all images first
|
||||
print("Starting the build phase...")
|
||||
build_images(images, dockerfile_paths, common_tag, version_tag, image_tag_prefix, build_context)
|
||||
|
||||
# Push all images after builds are complete
|
||||
print("Starting the push phase...")
|
||||
push_images(images, common_tag, version_tag, image_tag_prefix)
|
||||
|
||||
Reference in New Issue
Block a user