services: nocodb: image: nocodb/nocodb:latest env_file: docker.env deploy: mode: replicated replicas: 1 restart: unless-stopped volumes: - nocodb_data:/usr/app/data - ./nocodb/db.json:/usr/app/data/db.json networks: - nocodb-network labels: - 'traefik.enable=true' - 'traefik.http.routers.nocodb.rule=Host(`nocodb.example.com`)' - 'traefik.http.routers.nocodb.entrypoints=websecure' - 'traefik.http.routers.nocodb.tls.certresolver=letsencrypt' healthcheck: test: ['CMD-SHELL', 'wget -q --tries=1 --spider http://localhost:8080/api/v1/health || exit 1'] interval: 30s timeout: 5s retries: 5 start_period: 30s worker: image: nocodb/nocodb:latest env_file: docker.env environment: NC_WORKER_CONTAINER: 'true' depends_on: nocodb: condition: service_healthy restart: unless-stopped volumes: - nocodb_data:/usr/app/data - ./nocodb/db.json:/usr/app/data/db.json networks: - nocodb-network traefik: image: traefik:v3.6 command: - '--providers.docker=true' - '--providers.docker.exposedbydefault=false' - '--entryPoints.web.address=:80' - '--entryPoints.websecure.address=:443' - '--entryPoints.web.http.redirections.entryPoint.to=websecure' - '--entryPoints.web.http.redirections.entryPoint.scheme=https' - '--certificatesresolvers.letsencrypt.acme.httpchallenge.entrypoint=web' - '--certificatesresolvers.letsencrypt.acme.email=admin@example.com' - '--certificatesresolvers.letsencrypt.acme.storage=/letsencrypt/acme.json' ports: - '80:80' - '443:443' volumes: - /var/run/docker.sock:/var/run/docker.sock:ro - ./letsencrypt:/letsencrypt restart: unless-stopped networks: - nocodb-network networks: nocodb-network: driver: bridge volumes: nocodb_data: