diff --git a/conf.d/pocketapp.conf b/conf.d/pocketapp.conf new file mode 100644 index 0000000..b43abd0 --- /dev/null +++ b/conf.d/pocketapp.conf @@ -0,0 +1,23 @@ +server { + listen 80; + server_name pocket.psi.ch; + return 301 https://$host$request_uri; +} + +server { + listen 443 ssl; + server_name pocket.psi.ch; + + ssl_certificate /etc/nginx/certs/lx-docker-dmz-01.psi.ch.crt; + ssl_certificate_key /etc/nginx/private/lx-docker-dmz-01.psi.ch.key; + + location / { + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + proxy_pass http://pocketapp:4200; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + } +} \ No newline at end of file diff --git a/conf.d/psitrail.conf b/conf.d/psitrail.conf new file mode 100644 index 0000000..c9104b5 --- /dev/null +++ b/conf.d/psitrail.conf @@ -0,0 +1,23 @@ +server { + listen 80; + server_name psitrail.psi.ch; + return 301 https://$host$request_uri; +} + +server { + listen 443 ssl; + server_name psitrail.psi.ch; + + ssl_certificate /etc/nginx/certs/lx-docker-dmz-01.psi.ch.crt; + ssl_certificate_key /etc/nginx/private/lx-docker-dmz-01.psi.ch.key; + + location / { + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + proxy_pass http://psitrail:4200; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + } +} \ No newline at end of file diff --git a/conf.d/tubulinxyz.conf.bak b/conf.d/tubulinxyz.conf.bak new file mode 100644 index 0000000..940b412 --- /dev/null +++ b/conf.d/tubulinxyz.conf.bak @@ -0,0 +1,29 @@ +server { + listen 80; + server_name tubulin.xyz; + return 301 https://$host$request_uri; +} + +server { + listen 443 ssl; + server_name tubulin.xyz; + + ssl_certificate /etc/nginx/certs/lx-docker-dmz-01.psi.ch.crt; + ssl_certificate_key /etc/nginx/private/lx-docker-dmz-01.psi.ch.key; + + location /api/ { + proxy_pass http://backend:8000/; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + } + + location / { + proxy_pass http://frontend:3000; + proxy_set_header Host $host; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + proxy_cache_bypass $http_upgrade; + } +} diff --git a/docker-compose.yaml b/docker-compose.yaml index bce4738..f101ee7 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -57,7 +57,7 @@ services: # MCDA SRF Huang He mcda-srf: - image: gitea.psi.ch/images/mcda-srf:1.0.0 + image: gitea.psi.ch/images/mcda-srf:1.0.3 container_name: mcda-srf restart: always networks: @@ -147,7 +147,7 @@ services: # Romain Sacchi # CLIC Django platform clic-web: - image: ${CLIC_IMAGE:-gitea.psi.ch/images/clic:754f9f8} + image: ${CLIC_IMAGE:-gitea.psi.ch/images/clic:a3b90f8@sha256:84c0da77b8aab3a31391e3f713ef3ae701e08824ae4036ffe634105968f581e0} 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:a3b90f8@sha256:84c0da77b8aab3a31391e3f713ef3ae701e08824ae4036ffe634105968f581e0} 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", "--skip-checks"] + 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:a3b90f8@sha256:84c0da77b8aab3a31391e3f713ef3ae701e08824ae4036ffe634105968f581e0} container_name: clic-brightway-json-exports restart: always env_file: @@ -221,12 +235,24 @@ 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_brightway_json_exports", "--skip-checks", "--sleep", "${CLIC_API_EXPORT_POLL_SECONDS:-2}"] + command: + [ + "manage.py", + "process_brightway_json_exports", + "--skip-checks", + "--sleep", + "${CLIC_API_EXPORT_POLL_SECONDS:-2}", + ] depends_on: + clic-web: + condition: service_healthy clic-db: condition: service_healthy clic-redis: @@ -234,12 +260,54 @@ services: networks: - clic_backend + clic-inventory-archive: + image: ${CLIC_IMAGE:-gitea.psi.ch/images/clic:a3b90f8@sha256:84c0da77b8aab3a31391e3f713ef3ae701e08824ae4036ffe634105968f581e0} + 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: @@ -262,7 +330,7 @@ services: # Enea Zeolla drsa-tiermaker: - image: gitea.psi.ch/images/drsa-tiermaker:0.2.3 + image: gitea.psi.ch/images/drsa-tiermaker:0.2.4 container_name: drsa-tiermaker restart: always depends_on: @@ -362,7 +430,7 @@ services: - backend scicat-rocrate-qa: - image: gitea.psi.ch/data-catalog-services/scicat-rocrate:2.6.5-rc-ra-ingest.1 + image: gitea.psi.ch/data-catalog-services/scicat-rocrate:2.6.10-rc-openbis-doi.1 container_name: scicat-rocrate-qa restart: always networks: @@ -396,13 +464,13 @@ services: # LEAPS ultrafast frithjof.nolting@psi.ch felira-web: - image: gitea.psi.ch/leaps/leaps-felira:3.1.18 + image: gitea.psi.ch/leaps/leaps-felira:3.1.45 container_name: felira-web restart: always # volumes: # - /mount/webhosting_dmz_write/leaps/web:/var/www/html:rw depends_on: - - felira-db + - felira-database networks: - backend - leaps_db @@ -410,9 +478,9 @@ services: - DB_DATABASE=felira_leaps_ultrafast - DB_USERNAME=felira_leaps_ultrafast - DB_PASSWORD=${LEAPS_DB_PW} - felira-db: + felira-database: image: mariadb:latest - container_name: felira-db + container_name: felira-database restart: always environment: - MARIADB_ROOT_PASSWORD=${LEAPS_DB_PW} @@ -425,6 +493,188 @@ services: networks: - leaps_db + # Noah Pombas Teixeira De Freitas / + # PSI Trail - psitrail.psi.ch + # Image: gitea.psi.ch/bb_if_produktiv/psitrail:181 + psitrail: + image: gitea.psi.ch/bb_if_produktiv/psitrail:181 + container_name: psitrail + restart: always + networks: + - backend + + # Noah Pombas Teixeira De Freitas / + # Pocket App - pocket.psi.ch + # Image: gitea.psi.ch/bb_if_produktiv/pocketapp:17 + pocketapp: + image: gitea.psi.ch/bb_if_produktiv/pocketapp:21 + container_name: pocketapp + restart: always + networks: + - backend + +# # João Pedro Agostinho de Sousa +# # tubulin.xyz +# neo4j: +# image: neo4j:5 +# environment: +# NEO4J_AUTH: neo4j/${NEO4J_PASSWORD} +# NEO4J_server_memory_heap_initial__size: 1G +# NEO4J_server_memory_heap_max__size: 2G +# NEO4J_server_memory_pagecache_size: 1G +# volumes: +# - /mount/webhosting_dmz_write/tubulin/neo4j/data:/data +# - /mount/webhosting_dmz_write/tubulin/neo4j/logs:/logs +# healthcheck: +# test: +# [ +# "CMD", +# "cypher-shell", +# "-u", +# "neo4j", +# "-p", +# "${NEO4J_PASSWORD}", +# "RETURN 1", +# ] +# interval: 10s +# timeout: 5s +# retries: 10 +# start_period: 30s +# restart: always +# networks: +# - tubulinxyz_backend +# stop_grace_period: 60s +# logging: +# driver: json-file +# options: +# max-size: "50m" +# max-file: "5" +# deploy: +# resources: +# limits: +# memory: 4G +# +# bootstrap: +# image: ghcr.io/rtviii/tubulinxyz:latest +# pull_policy: always +# environment: +# NEO4J_URI: bolt://neo4j:7687 +# NEO4J_USER: neo4j +# NEO4J_PASSWORD: ${NEO4J_PASSWORD} +# NEO4J_CURRENTDB: neo4j +# TUBXZ_ROOT: /app +# TUBETL_DATA: /mnt/tubetl_data +# NCBI_TAXA_SQLITE: /app/.etetoolkit/taxa.sqlite +# volumes: +# - /mount/webhosting_dmz_write/tubulin/data:/mnt/tubetl_data +# - /mount/webhosting_dmz_write/tubulin/log:/var/log/tubxz +# depends_on: +# neo4j: +# condition: service_healthy +# entrypoint: ["/bin/sh", "/app/scripts/init_and_seed.sh"] +# restart: always +# networks: +# - tubulinxyz_backend +# logging: +# driver: json-file +# options: +# max-size: "50m" +# max-file: "3" +# deploy: +# resources: +# limits: +# memory: 4G +# +# backend: +# image: ghcr.io/rtviii/tubulinxyz:latest +# pull_policy: always +# environment: +# NEO4J_URI: bolt://neo4j:7687 +# NEO4J_USER: neo4j +# NEO4J_PASSWORD: ${NEO4J_PASSWORD} +# NEO4J_CURRENTDB: neo4j +# SECRET_KEY: ${SECRET_KEY} +# TUBXZ_ROOT: /app +# TUBETL_DATA: /mnt/tubetl_data +# NCBI_TAXA_SQLITE: /app/.etetoolkit/taxa.sqlite +# volumes: +# - /mount/webhosting_dmz_write/tubulin/data:/mnt/tubetl_data +# - /mount/webhosting_dmz_write/tubulin/log:/var/log/tubxz:ro +# depends_on: +# neo4j: +# condition: service_healthy +# healthcheck: +# test: ["CMD", "curl", "-f", "http://localhost:8000/health"] +# interval: 30s +# timeout: 5s +# retries: 3 +# start_period: 15s +# restart: always +# networks: +# - backend +# - tubulinxyz_backend +# stop_grace_period: 30s +# logging: +# driver: json-file +# options: +# max-size: "50m" +# max-file: "5" +# deploy: +# resources: +# limits: +# memory: 2G +# +# scheduler: +# image: ghcr.io/rtviii/tubulinxyz:latest +# pull_policy: always +# environment: +# NEO4J_URI: bolt://neo4j:7687 +# NEO4J_USER: neo4j +# NEO4J_PASSWORD: ${NEO4J_PASSWORD} +# NEO4J_CURRENTDB: neo4j +# TUBXZ_ROOT: /app +# TUBETL_DATA: /mnt/tubetl_data +# NCBI_TAXA_SQLITE: /app/.etetoolkit/taxa.sqlite +# volumes: +# - /mount/webhosting_dmz_write/tubulin/data:/mnt/tubetl_data +# - /mount/webhosting_dmz_write/tubulin/log:/var/log/tubxz +# depends_on: +# neo4j: +# condition: service_healthy +# entrypoint: ["/bin/sh", "/app/scripts/start_scheduler.sh"] +# restart: always +# networks: +# - tubulinxyz_backend +# logging: +# driver: json-file +# options: +# max-size: "50m" +# max-file: "5" +# deploy: +# resources: +# limits: +# memory: 4G +# +# frontend: +# image: ghcr.io/rtviii/tubulinxyz-frontend:latest +# pull_policy: always +# depends_on: +# backend: +# condition: service_healthy +# restart: always +# networks: +# - backend +# - tubulinxyz_backend +# logging: +# driver: json-file +# options: +# max-size: "50m" +# max-file: "3" +# deploy: +# resources: +# limits: +# memory: 512M +# networks: public: backend: @@ -433,3 +683,4 @@ networks: rhodo_network: leaps_db: drsa_tiermaker_backend: + tubulinxyz_backend: