services: redis: image: redis:7-alpine command: ["redis-server", "--appendonly", "yes"] volumes: - bm_redis_data:/data networks: - coolify geocoder-enqueue: build: context: apps/geocoder working_dir: /app environment: DATABASE_URL: ${DATABASE_URL} GEOCODE_ENQUEUE_BATCH: "100000" command: ["python", "src/enqueue.py"] networks: - coolify labels: - traefik.enable=false restart: "no" geocoder-worker: build: context: apps/geocoder working_dir: /app environment: DATABASE_URL: ${DATABASE_URL} GEOAPIFY_API_KEY: ${GEOAPIFY_API_KEY} GEOCODER_MIN_DELAY: "0.22" GEOCODER_JITTER: "0.10" GEOCODE_MAX_PER_RUN: "100000" GEOCODE_MAX_GEO_TRIES: "3" command: ["python", "src/worker.py"] networks: - coolify labels: - traefik.enable=false restart: unless-stopped groq-worker: build: context: apps/geocoder working_dir: /app environment: DATABASE_URL: ${DATABASE_URL} GROQ_API_KEY: ${GROQ_API_KEY} GROQ_MAX_TRIES: "5" GROQ_CALL_DELAY: "2.5" command: ["python", "src/groq_worker.py"] networks: - coolify labels: - traefik.enable=false restart: unless-stopped pgadmin: image: dpage/pgadmin4:8 environment: PGADMIN_DEFAULT_EMAIL: ${PGADMIN_EMAIL} PGADMIN_DEFAULT_PASSWORD: ${PGADMIN_PASSWORD} PGADMIN_CONFIG_SERVER_MODE: "True" volumes: - pgadmin_data:/var/lib/pgadmin networks: - coolify labels: - traefik.enable=true - traefik.docker.network=coolify - traefik.http.routers.bm-pgadmin.rule=Host(`pgadmin.bm.nicolasfryder.ovh`) - traefik.http.routers.bm-pgadmin.entrypoints=https - traefik.http.routers.bm-pgadmin.tls=true - traefik.http.routers.bm-pgadmin.tls.certresolver=letsencrypt - traefik.http.services.bm-pgadmin.loadbalancer.server.port=80 api: build: context: apps/api environment: PORT: "3000" DATABASE_URL: ${DATABASE_URL} BM_IMPORT_TOKEN: ${BM_IMPORT_TOKEN} CORS_ORIGINS: ${CORS_ORIGINS:-https://metalfrom.eu,https://www.metalfrom.eu} ADMIN_JWT_SECRET: ${ADMIN_JWT_SECRET} ADMIN_SEED_USERNAME: ${ADMIN_SEED_USERNAME} ADMIN_SEED_PASSWORD_HASH: ${ADMIN_SEED_PASSWORD_HASH} networks: coolify: aliases: - bm-api-internal labels: - traefik.enable=true - traefik.docker.network=coolify - traefik.http.routers.bm-api.rule=Host(`bm.nicolasfryder.ovh`) - traefik.http.routers.bm-api.entrypoints=https - traefik.http.routers.bm-api.tls=true - traefik.http.routers.bm-api.tls.certresolver=letsencrypt - traefik.http.services.bm-api.loadbalancer.server.port=3000 admin: build: context: apps/admin args: API_UPSTREAM: http://bm-api-internal:3000 networks: - coolify labels: - traefik.enable=true - traefik.docker.network=coolify - traefik.http.routers.bm-admin.rule=Host(`admin.metalfrom.eu`) - traefik.http.routers.bm-admin.entrypoints=https - traefik.http.routers.bm-admin.tls=true - traefik.http.routers.bm-admin.tls.certresolver=letsencrypt - traefik.http.services.bm-admin.loadbalancer.server.port=80 web: build: context: apps/web networks: - coolify labels: - traefik.enable=true - traefik.docker.network=coolify - traefik.http.routers.bm-web.rule=Host(`metalfrom.eu`) || Host(`www.metalfrom.eu`) - traefik.http.routers.bm-web.entrypoints=https - traefik.http.routers.bm-web.tls=true - traefik.http.routers.bm-web.tls.certresolver=letsencrypt - traefik.http.routers.bm-web.tls.domains[0].main=metalfrom.eu - traefik.http.routers.bm-web.tls.domains[0].sans=www.metalfrom.eu - traefik.http.services.bm-web.loadbalancer.server.port=80 networks: coolify: external: true name: coolify volumes: bm_redis_data: pgadmin_data: