mirror of
https://github.com/DorkSquadRR/DorkNet.git
synced 2026-10-26 07:28:45 -07:00
52e1d4f61c
Add scoped Traefik host labels to the gateway and put cloudflared on the Traefik network so the tunnel hands off to Traefik instead of forwarding every host straight to the app. Keep backend services internal-only.
236 lines
6.8 KiB
YAML
236 lines
6.8 KiB
YAML
x-dorknet-service-env: &dorknet-service-env
|
|
DORKNET_DOMAIN: ${DORKNET_DOMAIN:?Set DORKNET_DOMAIN in Dokploy}
|
|
DORKNET_JWT_SECRET: ${DORKNET_JWT_SECRET:?Set DORKNET_JWT_SECRET in Dokploy}
|
|
Database__Provider: postgres
|
|
ConnectionStrings__Default: ${DORKNET_POSTGRES_CONNECTION_STRING:-Host=postgres;Port=5432;Database=dorknet;Username=dorknet;Password=${POSTGRES_PASSWORD:-dorknet_dev}}
|
|
ConnectionStrings__Redis: redis:6379
|
|
S3__Endpoint: ${DORKNET_S3_ENDPOINT:?Set DORKNET_S3_ENDPOINT in Dokploy}
|
|
S3__AccessKey: ${DORKNET_S3_ACCESS_KEY:?Set DORKNET_S3_ACCESS_KEY in Dokploy}
|
|
S3__SecretKey: ${DORKNET_S3_SECRET_KEY:?Set DORKNET_S3_SECRET_KEY in Dokploy}
|
|
S3__Region: ${DORKNET_S3_REGION:-garage}
|
|
Photon__AppId: ${Photon__AppId:?Set Photon__AppId in Dokploy}
|
|
Photon__VoiceAppId: ${Photon__VoiceAppId:-}
|
|
Photon__CloudRegion: ${Photon__CloudRegion:-eu}
|
|
DorkNet__DefaultClientVersion: ${DORKNET_DEFAULT_CLIENT_VERSION:-december_2020_12_18}
|
|
DorkNet__SupportedVersions__0: ${DORKNET_SUPPORTED_VERSION:-december_2020_12_18}
|
|
DorkNet__BuildIdToVersionKey__20201210: ${DORKNET_DECEMBER_BUILD_VERSION_KEY:-december_2020_12_18}
|
|
|
|
x-dorknet-app-networks: &dorknet-app-networks
|
|
networks:
|
|
# Internal only — backends are reached by the gateway over `default`,
|
|
# never directly by Traefik, so keep them off dokploy-network.
|
|
- default
|
|
|
|
services:
|
|
gateway:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile.service
|
|
args:
|
|
PROJECT_PATH: DorkNet.Gateway/DorkNet.Gateway.csproj
|
|
APP_DLL: DorkNet.Gateway.dll
|
|
environment:
|
|
DORKNET_DOMAIN: ${DORKNET_DOMAIN:?Set DORKNET_DOMAIN in Dokploy}
|
|
DorkNet__Services__Identity: http://identity:8080
|
|
DorkNet__Services__Rooms: http://rooms:8080
|
|
DorkNet__Services__Notify: http://notify:8080
|
|
DorkNet__Services__Content: http://content:8080
|
|
DorkNet__Services__Social: http://social:8080
|
|
DorkNet__Services__Commerce: http://commerce:8080
|
|
DorkNet__Services__Platform: http://platform:8080
|
|
DorkNet__Services__Moderation: http://moderation:8080
|
|
DorkNet__Services__Web: http://web:8080
|
|
DorkNet__Services__Monolith: http://monolith:8080
|
|
expose:
|
|
- "8080"
|
|
networks:
|
|
- default
|
|
- dokploy-network
|
|
labels:
|
|
# Cloudflare terminates TLS at the edge; the tunnel -> Traefik leg is
|
|
# internal HTTP, so route on the `web` entrypoint with no certresolver.
|
|
- traefik.enable=true
|
|
- traefik.docker.network=dokploy-network
|
|
# Scope routing to YOUR domain (apex + subdomains) instead of catch-all:
|
|
- traefik.http.routers.dorknet-gw.rule=Host(`${DORKNET_DOMAIN}`) || HostRegexp(`^.+\.${DORKNET_DOMAIN}$`)
|
|
- traefik.http.routers.dorknet-gw.entrypoints=web
|
|
- traefik.http.services.dorknet-gw.loadbalancer.server.port=8080
|
|
depends_on:
|
|
- identity
|
|
- rooms
|
|
- notify
|
|
- content
|
|
- social
|
|
- commerce
|
|
- platform
|
|
- moderation
|
|
- web
|
|
- monolith
|
|
|
|
cloudflared:
|
|
image: cloudflare/cloudflared:latest
|
|
command: tunnel --no-autoupdate run --token ${CLOUDFLARE_TUNNEL_TOKEN:?Set CLOUDFLARE_TUNNEL_TOKEN in Dokploy}
|
|
# Must share dokploy-network so the tunnel can reach the Traefik
|
|
# container (dokploy-traefik) by name and hand traffic off to it.
|
|
networks:
|
|
- dokploy-network
|
|
depends_on:
|
|
- gateway
|
|
restart: unless-stopped
|
|
|
|
identity:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile.service
|
|
args:
|
|
PROJECT_PATH: DorkNet.Services.Identity/DorkNet.Services.Identity.csproj
|
|
APP_DLL: DorkNet.Services.Identity.dll
|
|
environment:
|
|
<<: *dorknet-service-env
|
|
<<: *dorknet-app-networks
|
|
depends_on:
|
|
- postgres
|
|
- redis
|
|
|
|
rooms:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile.service
|
|
args:
|
|
PROJECT_PATH: DorkNet.Services.Rooms/DorkNet.Services.Rooms.csproj
|
|
APP_DLL: DorkNet.Services.Rooms.dll
|
|
environment:
|
|
<<: *dorknet-service-env
|
|
<<: *dorknet-app-networks
|
|
depends_on:
|
|
- postgres
|
|
- redis
|
|
|
|
notify:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile.service
|
|
args:
|
|
PROJECT_PATH: DorkNet.Services.Notify/DorkNet.Services.Notify.csproj
|
|
APP_DLL: DorkNet.Services.Notify.dll
|
|
environment:
|
|
<<: *dorknet-service-env
|
|
<<: *dorknet-app-networks
|
|
depends_on:
|
|
- postgres
|
|
- redis
|
|
|
|
content:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile.service
|
|
args:
|
|
PROJECT_PATH: DorkNet.Services.Content/DorkNet.Services.Content.csproj
|
|
APP_DLL: DorkNet.Services.Content.dll
|
|
environment:
|
|
<<: *dorknet-service-env
|
|
<<: *dorknet-app-networks
|
|
depends_on:
|
|
- postgres
|
|
- redis
|
|
|
|
social:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile.service
|
|
args:
|
|
PROJECT_PATH: DorkNet.Services.Social/DorkNet.Services.Social.csproj
|
|
APP_DLL: DorkNet.Services.Social.dll
|
|
environment:
|
|
<<: *dorknet-service-env
|
|
<<: *dorknet-app-networks
|
|
depends_on:
|
|
- postgres
|
|
- redis
|
|
|
|
commerce:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile.service
|
|
args:
|
|
PROJECT_PATH: DorkNet.Services.Commerce/DorkNet.Services.Commerce.csproj
|
|
APP_DLL: DorkNet.Services.Commerce.dll
|
|
environment:
|
|
<<: *dorknet-service-env
|
|
<<: *dorknet-app-networks
|
|
depends_on:
|
|
- postgres
|
|
- redis
|
|
|
|
platform:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile.service
|
|
args:
|
|
PROJECT_PATH: DorkNet.Services.Platform/DorkNet.Services.Platform.csproj
|
|
APP_DLL: DorkNet.Services.Platform.dll
|
|
environment:
|
|
<<: *dorknet-service-env
|
|
<<: *dorknet-app-networks
|
|
depends_on:
|
|
- postgres
|
|
- redis
|
|
|
|
moderation:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile.service
|
|
args:
|
|
PROJECT_PATH: DorkNet.Services.Moderation/DorkNet.Services.Moderation.csproj
|
|
APP_DLL: DorkNet.Services.Moderation.dll
|
|
environment:
|
|
<<: *dorknet-service-env
|
|
<<: *dorknet-app-networks
|
|
depends_on:
|
|
- postgres
|
|
- redis
|
|
|
|
web:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile.service
|
|
args:
|
|
PROJECT_PATH: DorkNet.Services.Web/DorkNet.Services.Web.csproj
|
|
APP_DLL: DorkNet.Services.Web.dll
|
|
environment:
|
|
<<: *dorknet-service-env
|
|
<<: *dorknet-app-networks
|
|
depends_on:
|
|
- postgres
|
|
- redis
|
|
|
|
monolith:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile
|
|
environment:
|
|
<<: *dorknet-service-env
|
|
<<: *dorknet-app-networks
|
|
depends_on:
|
|
- postgres
|
|
- redis
|
|
|
|
postgres:
|
|
image: postgres:16-alpine
|
|
environment:
|
|
POSTGRES_DB: dorknet
|
|
POSTGRES_USER: dorknet
|
|
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-dorknet_dev}
|
|
volumes:
|
|
- microservices-postgres:/var/lib/postgresql/data
|
|
|
|
redis:
|
|
image: redis:7-alpine
|
|
|
|
volumes:
|
|
microservices-postgres:
|
|
|
|
networks:
|
|
dokploy-network:
|
|
external: true
|