#!/usr/bin/env bash set -euo pipefail ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" PROD_COMPOSE_FILE="${ROOT_DIR}/docker-compose.production.yml" TRAEFIK_COMPOSE_FILE="${ROOT_DIR}/traefik.yaml" ENV_FILE="${ROOT_DIR}/.env.docker.production" PROJECT_NAME="${DOCKER_PROD_PROJECT_NAME:-rentaldrivego-prod}" TRAEFIK_NETWORK="${DOCKER_PROD_TRAEFIK_NETWORK:-traefik-proxy}" ensure_env_file() { if [[ ! -f "${ENV_FILE}" ]]; then echo "Missing ${ENV_FILE}" >&2 echo "Create it from .env.docker.production.example before starting production containers." >&2 exit 1 fi } ensure_traefik_network() { if ! docker network inspect "${TRAEFIK_NETWORK}" >/dev/null 2>&1; then echo "Creating Docker network: ${TRAEFIK_NETWORK}" docker network create "${TRAEFIK_NETWORK}" >/dev/null fi } prod_compose() { docker compose -p "${PROJECT_NAME}" --env-file "${ENV_FILE}" -f "${PROD_COMPOSE_FILE}" "$@" } traefik_compose() { docker compose -f "${TRAEFIK_COMPOSE_FILE}" "$@" } start_prod_services() { ensure_env_file prod_compose up --build -d "$@" } start_traefik() { ensure_env_file ensure_traefik_network traefik_compose up -d }