Files
docker-compose/arty.yml

78 lines
3.2 KiB
YAML
Raw Normal View History

2025-10-25 13:52:01 +02:00
name: "docker.compose"
version: "1.0.0"
description: "Valknar's Stacks"
author: "valknar@pivoine.art"
license: "private"
envs:
default:
# Common
ADMIN_EMAIL: valknar@pivoine.art
NETWORK_NAME: pivoine
TIMEZONE: Europe/Berlin
# Core
CORE_COMPOSE_PROJECT_NAME: core
CORE_DB_HOST: postgres
CORE_DB_PORT: 5432
CORE_REDIS_HOST: redis
CORE_REDIS_PORT: 6379
CORE_REDIS_IMAGE: redis:7-alpine
CORE_POSTGRES_IMAGE: postgres:16-alpine
# VPN
VPN_TRAEFIK_ENABLED: true
VPN_COMPOSE_PROJECT_NAME: vpn
VPN_DOCKER_IMAGE: ghcr.io/wg-easy/wg-easy:latest
VPN_TRAEFIK_HOST: vpn.pivoine.art
# Track
TRACK_TRAEFIK_ENABLED: true
TRACK_COMPOSE_PROJECT_NAME: track
TRACK_DOCKER_IMAGE: ghcr.io/umami-software/umami:postgresql-latest
TRACK_TRAEFIK_HOST: track.pivoine.art
TRACK_DB_NAME: umami
# Blog
BLOG_TRAEFIK_ENABLED: true
BLOG_COMPOSE_PROJECT_NAME: blog
BLOG_DOCKER_IMAGE: joseluisq/static-web-server:latest
BLOG_TRAEFIK_HOST: pivoine.art
# Sexy
SEXY_TRAEFIK_ENABLED: true
SEXY_COMPOSE_PROJECT_NAME: sexy
SEXY_TRAEFIK_HOST: sexy.pivoine.art
SEXY_DIRECTUS_IMAGE: directus/directus:11.12.0
SEXY_FRONTEND_IMAGE: node:22
SEXY_DB_NAME: directus
SEXY_PUBLIC_URL: https://sexy.pivoine.art/api
SEXY_CORS_ORIGIN: https://sexy.pivoine.art
SEXY_SESSION_COOKIE_DOMAIN: sexy.pivoine.art
SEXY_CONTENT_SECURITY_POLICY_DIRECTIVES__FRAME_SRC: https://sexy.pivoine.art
SEXY_USER_REGISTER_URL_ALLOW_LIST: https://sexy.pivoine.art/signup/verify
SEXY_PASSWORD_RESET_URL_ALLOW_LIST: https://sexy.pivoine.art/password/reset
# Gotify
GOTIFY_TRAEFIK_ENABLED: true
GOTIFY_COMPOSE_PROJECT_NAME: track
GOTIFY_IMAGE: gotify/server:latest
GOTIFY_TRAEFIK_HOST: gotify.pivoine.art
# Proxy
PROXY_COMPOSE_PROJECT_NAME: proxy
PROXY_DOCKER_IMAGE: traefik:latest
scripts:
config: docker compose config
up: docker compose up -d
down: docker compose down
logs: docker compose logs -f
sync: rsync -avzhe ssh ./.env root@vps:~/Projects/docker.compose/
db/dump: |
PGPASSWORD="${DB_PASSWORD}" pg_dump -h "${DB_HOST}" -p "${DB_PORT}" -U "${DB_USER}" -d "${DB_NAME}" > sexy/directus.sql \
docker cp "sexy/directus.yaml" "sexy_api:/directus/directus.yaml" \
docker exec "sexy_api" npx directus schema apply /directus/directus.yaml \
db/import: |
PGPASSWORD="${DB_PASSWORD}" psql -h "${DB_HOST}" -p "${DB_PORT}" -U "${DB_USER}" -d postgres -c \
"SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname = '${DB_NAME}' AND pid <> pg_backend_pid();" \
PGPASSWORD="${DB_PASSWORD}" psql -h "${DB_HOST}" -p "${DB_PORT}" -U "${DB_USER}" -d postgres -c "DROP DATABASE IF EXISTS ${DB_NAME};" \
PGPASSWORD="${DB_PASSWORD}" psql -h "${DB_HOST}" -p "${DB_PORT}" -U "${DB_USER}" -d postgres -c "CREATE DATABASE ${DB_NAME};" \
PGPASSWORD="${DB_PASSWORD}" psql -h "${DB_HOST}" -p "${DB_PORT}" -U "${DB_USER}" -d "${DB_NAME}" -f "sexy/directus.sql" \
docker exec "sexy_api" npx directus schema snapshot "/directus/directus.yaml" \
docker cp "sexy_api:/directus/directus.yaml" "sexy/directus.yaml"
net: docker network create "$NETWORK_NAME"