Enhance project configuration by setting output to "standalone" in Next.js config files and updating .gitignore to include example environment files for better clarity and management.
This commit is contained in:
99
docker-compose.yml
Normal file
99
docker-compose.yml
Normal file
@@ -0,0 +1,99 @@
|
||||
# HexaHost — Bot + Dashboard behind Traefik
|
||||
#
|
||||
# Prerequisites:
|
||||
# - External Docker network: traefik-network
|
||||
# - Traefik already running and attached to that network
|
||||
# - Copy .env.docker.example → .env and fill secrets
|
||||
#
|
||||
# Start:
|
||||
# docker compose up -d --build
|
||||
|
||||
name: hexahost
|
||||
|
||||
services:
|
||||
bot:
|
||||
build:
|
||||
context: ./bot
|
||||
dockerfile: Dockerfile
|
||||
container_name: hexahost-bot
|
||||
restart: unless-stopped
|
||||
env_file:
|
||||
- .env
|
||||
environment:
|
||||
API_ENABLED: "true"
|
||||
API_HOST: "0.0.0.0"
|
||||
API_PORT: "8000"
|
||||
TUNNEL_ENABLED: "false"
|
||||
CORS_ORIGINS: "https://bot.hexahost.de"
|
||||
volumes:
|
||||
- bot-db:/app/db
|
||||
- bot-jsondb:/app/jsondb
|
||||
- bot-logs:/app/logs
|
||||
networks:
|
||||
- traefik-network
|
||||
- hexahost-internal
|
||||
healthcheck:
|
||||
test:
|
||||
[
|
||||
"CMD",
|
||||
"python",
|
||||
"-c",
|
||||
"import socket; s=socket.create_connection(('127.0.0.1',8000),5); s.close()",
|
||||
]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 5
|
||||
start_period: 90s
|
||||
|
||||
dashboard:
|
||||
build:
|
||||
context: ./dashboard
|
||||
dockerfile: Dockerfile
|
||||
args:
|
||||
NEXT_PUBLIC_BRAND_NAME: ${NEXT_PUBLIC_BRAND_NAME:-HexaHost}
|
||||
NEXT_PUBLIC_BRAND_NAME_WORD: ${NEXT_PUBLIC_BRAND_NAME_WORD:-HH}
|
||||
NEXT_PUBLIC_ADMIN_IDS: ${NEXT_PUBLIC_ADMIN_IDS:-}
|
||||
container_name: hexahost-dashboard
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
bot:
|
||||
condition: service_started
|
||||
env_file:
|
||||
- .env
|
||||
environment:
|
||||
# Server-side proxy → Bot API (Docker-intern, nicht öffentlich)
|
||||
DASHBOARD_API_URL: http://bot:8000/api/v1
|
||||
NEXTAUTH_URL: https://bot.hexahost.de/
|
||||
NEXT_PUBLIC_BRAND_NAME: ${NEXT_PUBLIC_BRAND_NAME:-HexaHost}
|
||||
NEXT_PUBLIC_BRAND_NAME_WORD: ${NEXT_PUBLIC_BRAND_NAME_WORD:-HH}
|
||||
PORT: "3000"
|
||||
HOSTNAME: "0.0.0.0"
|
||||
networks:
|
||||
- traefik-network
|
||||
- hexahost-internal
|
||||
labels:
|
||||
- traefik.enable=true
|
||||
- traefik.docker.network=traefik-network
|
||||
# HTTP → HTTPS redirect (optional, falls Entrypoint "web" existiert)
|
||||
- traefik.http.routers.hexahost-dashboard-http.rule=Host(`bot.hexahost.de`)
|
||||
- traefik.http.routers.hexahost-dashboard-http.entrypoints=web
|
||||
- traefik.http.routers.hexahost-dashboard-http.middlewares=hexahost-https-redirect
|
||||
- traefik.http.middlewares.hexahost-https-redirect.redirectscheme.scheme=https
|
||||
- traefik.http.middlewares.hexahost-https-redirect.redirectscheme.permanent=true
|
||||
# HTTPS
|
||||
- traefik.http.routers.hexahost-dashboard.rule=Host(`bot.hexahost.de`)
|
||||
- traefik.http.routers.hexahost-dashboard.entrypoints=websecure
|
||||
- traefik.http.routers.hexahost-dashboard.tls=true
|
||||
- traefik.http.routers.hexahost-dashboard.tls.certresolver=${TRAEFIK_CERT_RESOLVER:-letsencrypt}
|
||||
- traefik.http.services.hexahost-dashboard.loadbalancer.server.port=3000
|
||||
|
||||
networks:
|
||||
traefik-network:
|
||||
external: true
|
||||
hexahost-internal:
|
||||
driver: bridge
|
||||
|
||||
volumes:
|
||||
bot-db:
|
||||
bot-jsondb:
|
||||
bot-logs:
|
||||
Reference in New Issue
Block a user