mirror of
https://github.com/linux-odyssey/linux-odyssey.git
synced 2026-11-05 19:20:12 +08:00
119 lines
3.1 KiB
YAML
119 lines
3.1 KiB
YAML
services:
|
|
traefik:
|
|
image: traefik:v3.6.9
|
|
ports:
|
|
- 8000:8000
|
|
- 8080:8080
|
|
networks:
|
|
- players
|
|
- internal
|
|
command:
|
|
- '--api.insecure=true'
|
|
- '--providers.docker=true'
|
|
- '--providers.docker.exposedbydefault=false'
|
|
- '--entrypoints.web.address=:8000'
|
|
- '--entrypoints.web.forwardedHeaders.insecure=true' # trust all X-Forwarded headers
|
|
volumes:
|
|
- /var/run/docker.sock:/var/run/docker.sock:ro
|
|
|
|
app:
|
|
image: linuxodyssey/frontend:${IMAGE_TAG:-latest}
|
|
depends_on:
|
|
- backend
|
|
restart: always
|
|
build:
|
|
context: .
|
|
dockerfile: app/Dockerfile
|
|
target: prod
|
|
networks:
|
|
- internal
|
|
labels:
|
|
- 'traefik.enable=true'
|
|
- 'traefik.http.routers.app.entrypoints=web'
|
|
- 'traefik.http.routers.app.rule=PathPrefix(`/`)'
|
|
- 'traefik.http.routers.app.service=app'
|
|
- 'traefik.http.services.app.loadbalancer.server.port=80'
|
|
|
|
backend:
|
|
image: linuxodyssey/backend:${IMAGE_TAG:-latest}
|
|
depends_on:
|
|
- db
|
|
restart: always
|
|
build:
|
|
context: .
|
|
dockerfile: server/Dockerfile
|
|
target: prod
|
|
networks:
|
|
- internal
|
|
- players
|
|
volumes:
|
|
- /var/run/docker.sock:/var/run/docker.sock
|
|
- ./logs:/app/logs
|
|
- ./config:/app/config
|
|
- ./quests:/app/quests:ro
|
|
env_file:
|
|
- .env.prod
|
|
environment:
|
|
- DOCKER_NETWORK=linux-odyssey-players
|
|
- BACKEND_URL=http://backend:3000
|
|
- HOST_PROJECT_ROOT=${PWD}
|
|
labels:
|
|
- 'traefik.enable=true'
|
|
- 'traefik.http.routers.backend-api.entrypoints=web'
|
|
- 'traefik.http.routers.backend-api.rule=PathPrefix(`/api`)'
|
|
- 'traefik.http.routers.backend-api.service=backend'
|
|
- 'traefik.http.routers.backend-socket.entrypoints=web'
|
|
- 'traefik.http.routers.backend-socket.rule=PathPrefix(`/socket.io`)'
|
|
- 'traefik.http.routers.backend-socket.service=backend'
|
|
- 'traefik.http.routers.backend-trpc.entrypoints=web'
|
|
- 'traefik.http.routers.backend-trpc.rule=PathPrefix(`/trpc`)'
|
|
- 'traefik.http.routers.backend-trpc.service=backend'
|
|
- 'traefik.http.routers.backend-api-docs.entrypoints=web'
|
|
- 'traefik.http.routers.backend-api-docs.rule=PathPrefix(`/api-docs`)'
|
|
- 'traefik.http.routers.backend-api-docs.service=backend'
|
|
- 'traefik.http.services.backend.loadbalancer.server.port=3000'
|
|
|
|
analytics:
|
|
image: linuxodyssey/analytics:${IMAGE_TAG:-latest}
|
|
build:
|
|
context: .
|
|
dockerfile: services/analytics/Dockerfile
|
|
target: prod
|
|
restart: always
|
|
depends_on:
|
|
- db
|
|
networks:
|
|
- internal
|
|
ports:
|
|
- '3001:3001'
|
|
env_file:
|
|
- .env.prod
|
|
|
|
db:
|
|
image: mongo:6
|
|
restart: always
|
|
networks:
|
|
- internal
|
|
ports:
|
|
- '27017:27017'
|
|
volumes:
|
|
- mongo:/data/db
|
|
- ./mongo-init.js:/docker-entrypoint-initdb.d/mongo-init.js:ro
|
|
env_file:
|
|
- .env.prod
|
|
|
|
base:
|
|
image: linuxodyssey/quest-base:${IMAGE_TAG:-latest}
|
|
build:
|
|
context: .
|
|
dockerfile: ./quests/Dockerfile
|
|
|
|
networks:
|
|
internal:
|
|
players:
|
|
name: linux-odyssey-players
|
|
internal: true
|
|
|
|
volumes:
|
|
mongo:
|