diff --git a/conf.d/tubulinxyz.conf b/conf.d/tubulinxyz.conf new file mode 100644 index 0000000..940b412 --- /dev/null +++ b/conf.d/tubulinxyz.conf @@ -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 c79928f..6dee55e 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -225,7 +225,14 @@ services: - /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-db: condition: service_healthy @@ -424,6 +431,168 @@ services: networks: - leaps_db + # 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: @@ -432,3 +601,4 @@ networks: rhodo_network: leaps_db: drsa_tiermaker_backend: + tubulinxyz_backend: