feat(deploy): configure prod_pgsql service, mail env and updater script for postgresql
This commit is contained in:
parent
f59c40af68
commit
4362f04047
|
|
@ -16,7 +16,7 @@ services:
|
|||
- "443:443"
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||
- ${TRAEFIK_LETSENCRYPT_PATH:-/srv/netgescon/traefik/letsencrypt}:/letsencrypt
|
||||
- netgescon_letsencrypt:/letsencrypt
|
||||
networks:
|
||||
- netgescon_edge
|
||||
|
||||
|
|
@ -49,11 +49,11 @@ services:
|
|||
NETGESCON_PREUPDATE_BACKUP_VISIBLE: ${PROD_PREUPDATE_BACKUP_VISIBLE:-true}
|
||||
NETGESCON_PREUPDATE_DRIVE_ENABLED: ${PROD_PREUPDATE_DRIVE_ENABLED:-false}
|
||||
NETGESCON_PREUPDATE_REQUIRE_DRIVE: ${PROD_PREUPDATE_REQUIRE_DRIVE:-false}
|
||||
DB_CONNECTION: mysql
|
||||
DB_HOST: prod_db
|
||||
DB_PORT: 3306
|
||||
DB_DATABASE: ${PROD_DB_DATABASE}
|
||||
DB_USERNAME: ${PROD_DB_USERNAME}
|
||||
DB_CONNECTION: ${PROD_DB_CONNECTION:-pgsql}
|
||||
DB_HOST: ${PROD_DB_HOST:-prod_pgsql}
|
||||
DB_PORT: ${PROD_DB_PORT:-5432}
|
||||
DB_DATABASE: ${PROD_DB_DATABASE:-netgescon_prod}
|
||||
DB_USERNAME: ${PROD_DB_USERNAME:-netgescon_prod}
|
||||
DB_PASSWORD: ${PROD_DB_PASSWORD}
|
||||
RUN_MIGRATIONS: ${PROD_RUN_MIGRATIONS:-true}
|
||||
MIGRATIONS_STRICT: "false"
|
||||
|
|
@ -62,13 +62,22 @@ services:
|
|||
WAIT_FOR_DB: "true"
|
||||
DISABLE_SCHEMA_LOAD: "true"
|
||||
MYSQL_SSL_VERIFY_SERVER_CERT: "FALSE"
|
||||
MAIL_MAILER: smtp
|
||||
MAIL_HOST: smtp.gmail.com
|
||||
MAIL_PORT: 587
|
||||
MAIL_ENCRYPTION: tls
|
||||
MAIL_USERNAME: netgescon@gmail.com
|
||||
MAIL_PASSWORD: ${MAIL_PASSWORD:-pecd izll jlno vros}
|
||||
MAIL_FROM_ADDRESS: michele@netgescon.it
|
||||
MAIL_FROM_NAME: NetGescon
|
||||
QUEUE_CONNECTION: sync
|
||||
volumes:
|
||||
- ${PROD_STORAGE_PATH:-/srv/netgescon/prod/storage}:/var/www/storage
|
||||
- ${PROD_CACHE_PATH:-/srv/netgescon/prod/bootstrap-cache}:/var/www/bootstrap/cache
|
||||
- ${PROD_PUBLIC_PATH:-/srv/netgescon/prod/public}:/var/www/public
|
||||
- prod_storage:/var/www/storage
|
||||
- prod_cache:/var/www/bootstrap/cache
|
||||
- prod_public:/var/www/public
|
||||
- ${LEGACY_ARCHIVES_PATH:-/mnt/gescon-archives/gescon}:/mnt/gescon-archives/gescon:ro
|
||||
depends_on:
|
||||
- prod_db
|
||||
- prod_pgsql
|
||||
- prod_redis
|
||||
networks:
|
||||
- netgescon_edge
|
||||
|
|
@ -78,7 +87,7 @@ services:
|
|||
container_name: netgescon_prod_nginx
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- ${PROD_PUBLIC_PATH:-/srv/netgescon/prod/public}:/var/www/public:ro
|
||||
- prod_public:/var/www/public:ro
|
||||
- ./nginx/prod.conf:/etc/nginx/conf.d/default.conf:ro
|
||||
depends_on:
|
||||
- prod_app
|
||||
|
|
@ -96,6 +105,19 @@ services:
|
|||
networks:
|
||||
- netgescon_edge
|
||||
|
||||
prod_pgsql:
|
||||
image: postgres:16-alpine
|
||||
container_name: netgescon_prod_pgsql
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
POSTGRES_DB: ${PROD_DB_DATABASE:-netgescon_prod}
|
||||
POSTGRES_USER: ${PROD_DB_USERNAME:-netgescon_prod}
|
||||
POSTGRES_PASSWORD: ${PROD_DB_PASSWORD}
|
||||
volumes:
|
||||
- prod_pgsql:/var/lib/postgresql/data
|
||||
networks:
|
||||
- netgescon_edge
|
||||
|
||||
prod_db:
|
||||
image: mysql:8.0
|
||||
container_name: netgescon_prod_db
|
||||
|
|
@ -107,7 +129,7 @@ services:
|
|||
MYSQL_PASSWORD: ${PROD_DB_PASSWORD}
|
||||
MYSQL_ROOT_PASSWORD: ${PROD_DB_ROOT_PASSWORD}
|
||||
volumes:
|
||||
- ${PROD_DB_DATA_PATH:-/srv/netgescon/prod/mysql}:/var/lib/mysql
|
||||
- prod_db:/var/lib/mysql
|
||||
- ./mysql/init.sql:/docker-entrypoint-initdb.d/01-init.sql:ro
|
||||
networks:
|
||||
- netgescon_edge
|
||||
|
|
@ -117,7 +139,7 @@ services:
|
|||
container_name: netgescon_prod_redis
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- ${PROD_REDIS_DATA_PATH:-/srv/netgescon/prod/redis}:/data
|
||||
- prod_redis:/data
|
||||
networks:
|
||||
- netgescon_edge
|
||||
|
||||
|
|
@ -162,10 +184,19 @@ services:
|
|||
SEEDERS_STRICT: "false"
|
||||
DISABLE_SCHEMA_LOAD: "true"
|
||||
MYSQL_SSL_VERIFY_SERVER_CERT: "FALSE"
|
||||
MAIL_MAILER: smtp
|
||||
MAIL_HOST: smtp.gmail.com
|
||||
MAIL_PORT: 587
|
||||
MAIL_ENCRYPTION: tls
|
||||
MAIL_USERNAME: netgescon@gmail.com
|
||||
MAIL_PASSWORD: ${MAIL_PASSWORD:-pecd izll jlno vros}
|
||||
MAIL_FROM_ADDRESS: michele@netgescon.it
|
||||
MAIL_FROM_NAME: NetGescon
|
||||
QUEUE_CONNECTION: sync
|
||||
volumes:
|
||||
- ${DEMO_STORAGE_PATH:-/srv/netgescon/demo/storage}:/var/www/storage
|
||||
- ${DEMO_CACHE_PATH:-/srv/netgescon/demo/bootstrap-cache}:/var/www/bootstrap/cache
|
||||
- ${DEMO_PUBLIC_PATH:-/srv/netgescon/demo/public}:/var/www/public
|
||||
- demo_storage:/var/www/storage
|
||||
- demo_cache:/var/www/bootstrap/cache
|
||||
- demo_public:/var/www/public
|
||||
- ${LEGACY_ARCHIVES_PATH:-/mnt/gescon-archives/gescon}:/mnt/gescon-archives/gescon:ro
|
||||
depends_on:
|
||||
- demo_db
|
||||
|
|
@ -206,7 +237,7 @@ services:
|
|||
MYSQL_PASSWORD: ${DEMO_DB_PASSWORD}
|
||||
MYSQL_ROOT_PASSWORD: ${DEMO_DB_ROOT_PASSWORD}
|
||||
volumes:
|
||||
- ${DEMO_DB_DATA_PATH:-/srv/netgescon/demo/mysql}:/var/lib/mysql
|
||||
- demo_db:/var/lib/mysql
|
||||
- ./mysql/init.sql:/docker-entrypoint-initdb.d/01-init.sql:ro
|
||||
networks:
|
||||
- netgescon_edge
|
||||
|
|
@ -216,7 +247,7 @@ services:
|
|||
container_name: netgescon_demo_redis
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- ${DEMO_REDIS_DATA_PATH:-/srv/netgescon/demo/redis}:/data
|
||||
- demo_redis:/data
|
||||
networks:
|
||||
- netgescon_edge
|
||||
|
||||
|
|
@ -239,6 +270,20 @@ services:
|
|||
networks:
|
||||
- netgescon_edge
|
||||
|
||||
volumes:
|
||||
netgescon_letsencrypt:
|
||||
prod_pgsql:
|
||||
prod_db:
|
||||
prod_storage:
|
||||
prod_cache:
|
||||
prod_public:
|
||||
prod_redis:
|
||||
demo_db:
|
||||
demo_storage:
|
||||
demo_cache:
|
||||
demo_public:
|
||||
demo_redis:
|
||||
|
||||
networks:
|
||||
netgescon_edge:
|
||||
driver: bridge
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ set -euo pipefail
|
|||
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
ENV_FILE="${ENV_FILE:-$ROOT_DIR/docker/.env.multisite}"
|
||||
COMPOSE_FILE="$ROOT_DIR/docker/docker-compose.multisite.yml"
|
||||
GIT_REF="${GIT_REF:-main}"
|
||||
GIT_REF="${GIT_REF:-stabilization/205-zero}"
|
||||
|
||||
upsert_env_var() {
|
||||
local key="$1"
|
||||
|
|
@ -48,8 +48,14 @@ fi
|
|||
"$ROOT_DIR/scripts/ops/netgescon-prepare-multisite-host-paths.sh" --env-file "$ENV_FILE"
|
||||
mkdir -p "$ROOT_DIR/storage/backups"
|
||||
MYSQLDUMP_FLAGS="--single-transaction --skip-lock-tables"
|
||||
docker exec netgescon_prod_db sh -lc "mysqldump $MYSQLDUMP_FLAGS -u root -p\"$PROD_DB_ROOT_PASSWORD\" \"$PROD_DB_DATABASE\"" > "$ROOT_DIR/storage/backups/prod_$(date +%F_%H%M%S).sql"
|
||||
docker exec netgescon_demo_db sh -lc "mysqldump $MYSQLDUMP_FLAGS -u root -p\"$DEMO_DB_ROOT_PASSWORD\" \"$DEMO_DB_DATABASE\"" > "$ROOT_DIR/storage/backups/demo_$(date +%F_%H%M%S).sql"
|
||||
if docker ps --format '{{.Names}}' | grep -q "^netgescon_prod_pgsql$"; then
|
||||
docker exec netgescon_prod_pgsql sh -lc "pg_dump -U \"${PROD_DB_USERNAME:-netgescon_prod}\" \"${PROD_DB_DATABASE:-netgescon_prod}\"" > "$ROOT_DIR/storage/backups/prod_pgsql_$(date +%F_%H%M%S).sql" 2>/dev/null || true
|
||||
elif docker ps --format '{{.Names}}' | grep -q "^netgescon_prod_db$"; then
|
||||
docker exec netgescon_prod_db sh -lc "mysqldump $MYSQLDUMP_FLAGS -u root -p\"$PROD_DB_ROOT_PASSWORD\" \"$PROD_DB_DATABASE\"" > "$ROOT_DIR/storage/backups/prod_$(date +%F_%H%M%S).sql" 2>/dev/null || true
|
||||
fi
|
||||
if docker ps --format '{{.Names}}' | grep -q "^netgescon_demo_db$"; then
|
||||
docker exec netgescon_demo_db sh -lc "mysqldump $MYSQLDUMP_FLAGS -u root -p\"$DEMO_DB_ROOT_PASSWORD\" \"$DEMO_DB_DATABASE\"" > "$ROOT_DIR/storage/backups/demo_$(date +%F_%H%M%S).sql" 2>/dev/null || true
|
||||
fi
|
||||
|
||||
echo "[2/6] Update codice..."
|
||||
cd "$ROOT_DIR"
|
||||
|
|
@ -60,8 +66,8 @@ git pull --ff-only origin "$GIT_REF"
|
|||
echo "[3/6] Build nuove immagini app..."
|
||||
docker compose --env-file "$ENV_FILE" -f "$COMPOSE_FILE" build prod_app demo_app
|
||||
|
||||
echo "[4/6] Rolling update app/nignx..."
|
||||
docker compose --env-file "$ENV_FILE" -f "$COMPOSE_FILE" up -d prod_app prod_nginx demo_app demo_nginx
|
||||
echo "[4/6] Rolling update app/nginx..."
|
||||
docker compose --env-file "$ENV_FILE" -f "$COMPOSE_FILE" up -d prod_pgsql prod_app prod_nginx demo_app demo_nginx
|
||||
|
||||
echo "[5/6] Pulizia cache applicativa..."
|
||||
docker exec netgescon_prod_app php artisan optimize:clear || true
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user