Coolify prefixe les reseaux externes avec l UUID du projet, donc external: true, name: coolify ne fonctionne pas pour les services sans labels Traefik. Solution : integrer la DB directement dans le compose sur bm_internal. - Service db: postgis/postgis:16-3.4, volume bm_dev_db_data - Tous les DATABASE_URL passent par postgres://bm:@db:5432/bm - depends_on db (condition: service_healthy) sur tous les consumers - crawler, geocoder, flaresolverr: plus de reseau coolify (inutile) - La DB Coolify standalone n9dttfjalj5trqsg3o8twduo peut etre arretee Env vars requises dans Coolify UI: POSTGRES_PASSWORD, BM_IMPORT_TOKEN, PGADMIN_EMAIL, PGADMIN_PASSWORD, NOMINATIM_EMAIL, NOMINATIM_USER_AGENT Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
146 lines
3.9 KiB
YAML
146 lines
3.9 KiB
YAML
services:
|
|
db:
|
|
image: postgis/postgis:16-3.4
|
|
environment:
|
|
POSTGRES_DB: bm
|
|
POSTGRES_USER: bm
|
|
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
|
|
volumes:
|
|
- bm_dev_db_data:/var/lib/postgresql/data
|
|
networks:
|
|
- bm_internal
|
|
restart: unless-stopped
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready -U bm -d bm"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 5
|
|
|
|
redis:
|
|
image: redis:7-alpine
|
|
command: ["redis-server", "--appendonly", "yes"]
|
|
volumes:
|
|
- bm_dev_redis_data:/data
|
|
networks:
|
|
- bm_internal
|
|
|
|
flaresolverr:
|
|
image: ghcr.io/flaresolverr/flaresolverr:latest
|
|
environment:
|
|
LOG_LEVEL: info
|
|
CAPTCHA_SOLVER: none
|
|
networks:
|
|
- bm_internal
|
|
restart: unless-stopped
|
|
|
|
crawler:
|
|
build:
|
|
context: apps/crawler
|
|
environment:
|
|
DATABASE_URL: postgres://bm:${POSTGRES_PASSWORD}@db:5432/bm
|
|
FLARESOLVERR_URL: http://flaresolverr:8191
|
|
CRAWLER_SCHED_INCREMENTAL_H: "4"
|
|
CRAWLER_SCHED_ENRICH_H: "2"
|
|
CRAWLER_SCHED_FULL_DAY: "0"
|
|
depends_on:
|
|
db:
|
|
condition: service_healthy
|
|
flaresolverr:
|
|
condition: service_started
|
|
networks:
|
|
- bm_internal
|
|
restart: unless-stopped
|
|
|
|
geocoder-worker:
|
|
build:
|
|
context: apps/geocoder
|
|
working_dir: /app
|
|
environment:
|
|
DATABASE_URL: postgres://bm:${POSTGRES_PASSWORD}@db:5432/bm
|
|
NOMINATIM_BASE: "https://nominatim.openstreetmap.org"
|
|
NOMINATIM_EMAIL: ${NOMINATIM_EMAIL}
|
|
NOMINATIM_USER_AGENT: ${NOMINATIM_USER_AGENT}
|
|
NOMINATIM_MIN_DELAY: "1.05"
|
|
NOMINATIM_JITTER: "0.35"
|
|
GEOCODE_MAX_PER_RUN: "5000"
|
|
command: ["python", "src/worker.py"]
|
|
depends_on:
|
|
db:
|
|
condition: service_healthy
|
|
networks:
|
|
- bm_internal
|
|
restart: "no"
|
|
|
|
pgadmin:
|
|
image: dpage/pgadmin4:8
|
|
environment:
|
|
PGADMIN_DEFAULT_EMAIL: ${PGADMIN_EMAIL}
|
|
PGADMIN_DEFAULT_PASSWORD: ${PGADMIN_PASSWORD}
|
|
PGADMIN_CONFIG_SERVER_MODE: "True"
|
|
volumes:
|
|
- bm_dev_pgadmin_data:/var/lib/pgadmin
|
|
depends_on:
|
|
db:
|
|
condition: service_healthy
|
|
networks:
|
|
- bm_internal
|
|
- coolify
|
|
labels:
|
|
- traefik.enable=true
|
|
- traefik.docker.network=coolify
|
|
- traefik.http.routers.dev-pgadmin.rule=Host(`dev-pgadmin.metalfrom.eu`)
|
|
- traefik.http.routers.dev-pgadmin.entrypoints=https
|
|
- traefik.http.routers.dev-pgadmin.tls=true
|
|
- traefik.http.routers.dev-pgadmin.tls.certresolver=letsencrypt
|
|
- traefik.http.services.dev-pgadmin.loadbalancer.server.port=80
|
|
|
|
api:
|
|
build:
|
|
context: apps/api
|
|
environment:
|
|
PORT: "3000"
|
|
DATABASE_URL: postgres://bm:${POSTGRES_PASSWORD}@db:5432/bm
|
|
BM_IMPORT_TOKEN: ${BM_IMPORT_TOKEN}
|
|
CORS_ORIGINS: https://dev.metalfrom.eu
|
|
depends_on:
|
|
db:
|
|
condition: service_healthy
|
|
networks:
|
|
- bm_internal
|
|
- coolify
|
|
labels:
|
|
- traefik.enable=true
|
|
- traefik.docker.network=coolify
|
|
- traefik.http.routers.dev-api.rule=Host(`dev-api.metalfrom.eu`)
|
|
- traefik.http.routers.dev-api.entrypoints=https
|
|
- traefik.http.routers.dev-api.tls=true
|
|
- traefik.http.routers.dev-api.tls.certresolver=letsencrypt
|
|
- traefik.http.services.dev-api.loadbalancer.server.port=3000
|
|
|
|
web:
|
|
build:
|
|
context: apps/web
|
|
args:
|
|
API_BASE: https://dev-api.metalfrom.eu
|
|
networks:
|
|
- coolify
|
|
labels:
|
|
- traefik.enable=true
|
|
- traefik.docker.network=coolify
|
|
- traefik.http.routers.dev-web.rule=Host(`dev.metalfrom.eu`)
|
|
- traefik.http.routers.dev-web.entrypoints=https
|
|
- traefik.http.routers.dev-web.tls=true
|
|
- traefik.http.routers.dev-web.tls.certresolver=letsencrypt
|
|
- traefik.http.services.dev-web.loadbalancer.server.port=80
|
|
|
|
networks:
|
|
bm_internal:
|
|
driver: bridge
|
|
coolify:
|
|
external: true
|
|
name: coolify
|
|
|
|
volumes:
|
|
bm_dev_db_data:
|
|
bm_dev_redis_data:
|
|
bm_dev_pgadmin_data:
|