Merge pull request 'CLIC: automatic Zenodo restore and container-managed nightly backups' (#52) from sacchi_r/WebHosting_DMZ:update-clic-archive-5bbfcaf into main

Reviewed-on: linux/WebHosting_DMZ#52
This commit is contained in:
bruhn_b committed 2026-09-21 13:35:39 +02:00
commit a30ff7bf25
1 file changed
+66 -5
+66 -5
View File
@@ -147,7 +147,7 @@ services:
# Romain Sacchi <romain.sacchi@psi.ch>
# CLIC Django platform
clic-web:
image: ${CLIC_IMAGE:-gitea.psi.ch/images/clic:754f9f8}
image: ${CLIC_IMAGE:-gitea.psi.ch/images/clic:ae59c15}
container_name: clic-web
restart: always
env_file:
@@ -159,6 +159,15 @@ services:
- CLIC_CACHE_BACKEND=redis
- CLIC_REDIS_URL=redis://clic-redis:6379/0
- CLIC_REQUIRE_SHARED_CACHE=1
- INVENTORY_ARCHIVE_ENVIRONMENT=production
- INVENTORY_ARCHIVE_AUTO_RESTORE=1
- INVENTORY_ARCHIVE_PUBLISH_MODE=off
- INVENTORY_ARCHIVE_TERMS_REVIEWED=0
- INVENTORY_ARCHIVE_TOKEN=
- INVENTORY_ARCHIVE_OWNER_ID=86122
- INVENTORY_ARCHIVE_SERIES_ID=22850223
- INVENTORY_ARCHIVE_BOOTSTRAP_RECORD_ID=
- INVENTORY_ARCHIVE_BOOTSTRAP_SHA256=
volumes:
- /mount/webhosting_dmz_write/clic/media:/app/media
- /mount/webhosting_dmz_write/clic/impact_factors:/app/data/impact_factors:ro
@@ -173,17 +182,17 @@ services:
- CMD
- python
- -c
- "import urllib.request; r = urllib.request.Request('http://127.0.0.1:8000/health/live/', headers={'Host': 'clic.psi.ch', 'X-Forwarded-Proto': 'https'}); urllib.request.urlopen(r, timeout=5)"
- "import urllib.request; r = urllib.request.Request('http://127.0.0.1:8000/health/ready/', headers={'Host': 'clic.psi.ch', 'X-Forwarded-Proto': 'https'}); urllib.request.urlopen(r, timeout=5)"
interval: 30s
timeout: 5s
retries: 5
start_period: 30s
start_period: 10m
networks:
- backend
- clic_backend
clic-package-exports:
image: ${CLIC_IMAGE:-gitea.psi.ch/images/clic:754f9f8}
image: ${CLIC_IMAGE:-gitea.psi.ch/images/clic:ae59c15}
container_name: clic-package-exports
restart: always
env_file:
@@ -195,12 +204,17 @@ services:
- CLIC_CACHE_BACKEND=redis
- CLIC_REDIS_URL=redis://clic-redis:6379/0
- CLIC_REQUIRE_SHARED_CACHE=1
- INVENTORY_ARCHIVE_AUTO_RESTORE=0
- INVENTORY_ARCHIVE_PUBLISH_MODE=off
- INVENTORY_ARCHIVE_TOKEN=
volumes:
- /mount/webhosting_dmz_write/clic/media:/app/media
- /mount/webhosting_dmz_write/clic/impact_factors:/app/data/impact_factors:ro
entrypoint: ["python"]
command: ["manage.py", "process_package_exports"]
depends_on:
clic-web:
condition: service_healthy
clic-db:
condition: service_healthy
clic-redis:
@@ -209,7 +223,7 @@ services:
- clic_backend
clic-brightway-json-exports:
image: ${CLIC_IMAGE:-gitea.psi.ch/images/clic:754f9f8}
image: ${CLIC_IMAGE:-gitea.psi.ch/images/clic:ae59c15}
container_name: clic-brightway-json-exports
restart: always
env_file:
@@ -221,6 +235,9 @@ services:
- CLIC_CACHE_BACKEND=redis
- CLIC_REDIS_URL=redis://clic-redis:6379/0
- CLIC_REQUIRE_SHARED_CACHE=1
- INVENTORY_ARCHIVE_AUTO_RESTORE=0
- INVENTORY_ARCHIVE_PUBLISH_MODE=off
- INVENTORY_ARCHIVE_TOKEN=
volumes:
- /mount/webhosting_dmz_write/clic/media:/app/media
- /mount/webhosting_dmz_write/clic/impact_factors:/app/data/impact_factors:ro
@@ -234,6 +251,8 @@ services:
"${CLIC_API_EXPORT_POLL_SECONDS:-2}",
]
depends_on:
clic-web:
condition: service_healthy
clic-db:
condition: service_healthy
clic-redis:
@@ -241,12 +260,54 @@ services:
networks:
- clic_backend
clic-inventory-archive:
image: ${CLIC_IMAGE:-gitea.psi.ch/images/clic:ae59c15}
container_name: clic-inventory-archive
restart: always
env_file:
- /mount/webhosting_dmz_write/clic/clic.env
environment:
- DJANGO_SETTINGS_MODULE=config.settings.production
- POSTGRES_HOST=clic-db
- POSTGRES_PORT=5432
- CLIC_CACHE_BACKEND=redis
- CLIC_REDIS_URL=redis://clic-redis:6379/0
- CLIC_REQUIRE_SHARED_CACHE=1
- IMPACT_SCORES_ENABLED=0
- INVENTORY_ARCHIVE_ENVIRONMENT=production
- INVENTORY_ARCHIVE_AUTO_RESTORE=0
- INVENTORY_ARCHIVE_PUBLISH_MODE=scheduled
- INVENTORY_ARCHIVE_TERMS_REVIEWED=1
- INVENTORY_ARCHIVE_OWNER_ID=86122
- INVENTORY_ARCHIVE_SERIES_ID=22850223
- INVENTORY_ARCHIVE_BOOTSTRAP_RECORD_ID=
- INVENTORY_ARCHIVE_BOOTSTRAP_SHA256=
- INVENTORY_ARCHIVE_METADATA_FILE=/app/config/inventory-archive-metadata.json
- INVENTORY_ARCHIVE_REDISTRIBUTION_FILE=
- INVENTORY_ARCHIVE_ALERT_EMAIL=romain.sacchi@psi.ch
entrypoint: ["python"]
command: ["manage.py", "run_inventory_archive_worker"]
depends_on:
clic-web:
condition: service_healthy
healthcheck:
test: ["CMD", "python", "manage.py", "inventory_archive_status", "--alert"]
interval: 5m
timeout: 60s
retries: 1
start_period: 10m
stop_grace_period: 3m
networks:
- clic_backend
clic-db:
image: postgres:16
container_name: clic-db
restart: always
env_file:
- /mount/webhosting_dmz_write/clic/clic.env
environment:
- INVENTORY_ARCHIVE_TOKEN=
volumes:
- /mount/webhosting_dmz_write/clic/postgres:/var/lib/postgresql/data
healthcheck: