Aggiunge Garage al compose di produzione e script di bootstrap.
Rails e Sidekiq usano S3 interno (http://garage:3900); setup_garage_production.sh configura bucket, chiavi e infra/.env sul server. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
25
infra/scripts/ensure_garage_prod_config.sh
Executable file
25
infra/scripts/ensure_garage_prod_config.sh
Executable file
@@ -0,0 +1,25 @@
|
||||
#!/usr/bin/env bash
|
||||
# Crea garage/garage.prod.toml con secret casuali se mancante (solo produzione).
|
||||
set -euo pipefail
|
||||
|
||||
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
|
||||
DEST="${ROOT}/garage/garage.prod.toml"
|
||||
TEMPLATE="${ROOT}/garage/garage.prod.toml.example"
|
||||
|
||||
if [ -f "$DEST" ]; then
|
||||
echo "Config Garage produzione già presente: $DEST"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ ! -f "$TEMPLATE" ]; then
|
||||
echo "Manca $TEMPLATE"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
RPC="$(openssl rand -hex 32)"
|
||||
ADMIN="$(openssl rand -hex 32)"
|
||||
sed -e "s/CHANGE_ME_RPC_SECRET_64_HEX/${RPC}/" \
|
||||
-e "s/CHANGE_ME_ADMIN_TOKEN_64_HEX/${ADMIN}/" \
|
||||
"$TEMPLATE" > "$DEST"
|
||||
chmod 600 "$DEST"
|
||||
echo "Creato $DEST"
|
||||
24
infra/scripts/setup_garage_production.sh
Executable file
24
infra/scripts/setup_garage_production.sh
Executable file
@@ -0,0 +1,24 @@
|
||||
#!/usr/bin/env bash
|
||||
# Garage replay storage su server produzione (/opt/matchlivetv/infra)
|
||||
set -euo pipefail
|
||||
|
||||
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
|
||||
cd "$ROOT"
|
||||
|
||||
export COMPOSE_FILE="docker-compose.prod.yml"
|
||||
export ENV_FILE="${ROOT}/.env"
|
||||
export CREDS_FILE="${ROOT}/garage/prod-credentials.env"
|
||||
|
||||
bash "${ROOT}/scripts/ensure_garage_prod_config.sh"
|
||||
|
||||
echo "Avvio Garage..."
|
||||
docker compose -f docker-compose.prod.yml --env-file .env up -d garage
|
||||
|
||||
bash "${ROOT}/scripts/setup_garage_replays.sh"
|
||||
|
||||
echo "Riavvio Rails e Sidekiq..."
|
||||
docker compose -f docker-compose.prod.yml --env-file .env up -d rails sidekiq
|
||||
|
||||
echo "Verifica storage:"
|
||||
docker compose -f docker-compose.prod.yml --env-file .env exec -T rails bundle exec rails runner \
|
||||
'puts({local: MatchLiveTv.replay_storage_local?, backend: Recordings::Storage.new.backend_name}.inspect)'
|
||||
@@ -3,11 +3,23 @@
|
||||
set -euo pipefail
|
||||
|
||||
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
|
||||
GARAGE_CONTAINER="${GARAGE_CONTAINER:-infra-garage-1}"
|
||||
COMPOSE_FILE="${COMPOSE_FILE:-docker-compose.yml}"
|
||||
GARAGE_CONTAINER="${GARAGE_CONTAINER:-}"
|
||||
BUCKET="${REPLAY_STORAGE_BUCKET:-matchlivetv-replays}"
|
||||
KEY_NAME="${REPLAY_STORAGE_KEY_NAME:-replay-uploader}"
|
||||
CREDS_FILE="${ROOT}/garage/dev-credentials.env"
|
||||
ENV_FILE="${ROOT}/.env"
|
||||
CREDS_FILE="${CREDS_FILE:-${ROOT}/garage/dev-credentials.env}"
|
||||
ENV_FILE="${ENV_FILE:-${ROOT}/.env}"
|
||||
|
||||
compose() {
|
||||
docker compose -f "${ROOT}/${COMPOSE_FILE}" --env-file "${ENV_FILE}" "$@"
|
||||
}
|
||||
|
||||
resolve_garage_container() {
|
||||
if [ -n "$GARAGE_CONTAINER" ]; then
|
||||
return 0
|
||||
fi
|
||||
GARAGE_CONTAINER="$(docker ps --format '{{.Names}}' | grep -E 'garage-1$' | head -1 || true)"
|
||||
}
|
||||
|
||||
gexec() {
|
||||
docker exec "$GARAGE_CONTAINER" /garage "$@"
|
||||
@@ -21,7 +33,7 @@ wait_garage() {
|
||||
fi
|
||||
sleep 1
|
||||
done
|
||||
echo "Garage non risponde. Avvia: cd $ROOT && docker compose up -d garage"
|
||||
echo "Garage non risponde. Avvia: cd $ROOT && docker compose -f $COMPOSE_FILE up -d garage"
|
||||
exit 1
|
||||
}
|
||||
|
||||
@@ -126,9 +138,11 @@ EOF
|
||||
|
||||
main() {
|
||||
cd "$ROOT"
|
||||
if ! docker ps --format '{{.Names}}' | grep -q "^${GARAGE_CONTAINER}$"; then
|
||||
echo "Avvio container garage..."
|
||||
docker compose up -d garage
|
||||
resolve_garage_container
|
||||
if [ -z "$GARAGE_CONTAINER" ] || ! docker ps --format '{{.Names}}' | grep -q "^${GARAGE_CONTAINER}$"; then
|
||||
echo "Avvio container garage ($COMPOSE_FILE)..."
|
||||
compose up -d garage
|
||||
resolve_garage_container
|
||||
fi
|
||||
wait_garage
|
||||
ensure_layout
|
||||
@@ -137,7 +151,7 @@ main() {
|
||||
write_credentials
|
||||
merge_into_env
|
||||
echo ""
|
||||
echo "Riavvia app: docker compose up -d rails sidekiq"
|
||||
echo "Riavvia app: docker compose -f $COMPOSE_FILE up -d rails sidekiq"
|
||||
}
|
||||
|
||||
main "$@"
|
||||
|
||||
Reference in New Issue
Block a user