AVA-docker/docker-compose.yml
2024-02-26 09:19:28 +01:00

114 lines
4.4 KiB
YAML

version: '3'
services:
traefik:
image: traefik
restart: unless-stopped
ports:
- "80:80"
- "443:443"
volumes:
#- /var/run/docker.sock:/var/run/docker.sock
- "////./pipe/docker_engine:/var/run/docker.sock"
- ./traefik.yml:/etc/traefik/traefik.yml
- ./authorized_users:/etc/traefik/authorized_users
- ./acme.json:/acme.json
labels:
- "traefik.enable=true"
- "traefik.http.routers.dashboard-http.entrypoints=http"
- "traefik.http.routers.dashboard-http.rule=Host(`localhost/`)"
- "traefik.http.routers.dashboard-http.middlewares=dashboard-redirect"
- "traefik.http.middlewares.dashboard-redirect.redirectscheme.scheme=https"
- "traefik.http.routers.dashboard-https.entrypoints=https"
- "traefik.http.routers.dashboard-https.rule=(Host(`localhost/`)) && (PathPrefix(`/api`) || PathPrefix(`/dashboard`))"
- "traefik.http.routers.dashboard-https.tls.certResolver=letsencrypt"
- "traefik.http.routers.dashboard-https.service=api@internal"
- "traefik.http.routers.dashboard-https.middlewares=dashboard-auth"
- "traefik.http.middlewares.dashboard-auth.basicauth.usersfile=/etc/traefik/authorized_users"
command:
# Enable Docker in Traefik, so that it reads labels from Docker services
- --providers.docker
# Add a constraint to only use services with the label "traefik.constraint-label=traefik-public"
#- --providers.docker.constraints=Label(`traefik.constraint-label`, `traefik-public`)
# Do not expose all Docker services, only the ones explicitly exposed
#- --providers.docker.exposedbydefault=false
# Enable Docker Swarm mode
- --providers.docker.swarmmode
# Create an entrypoint "http" listening on port 80
- --entrypoints.http.address=:80
# Create an entrypoint "https" listening on port 443
- --entrypoints.https.address=:443
# Create the certificate resolver "le" for Let's Encrypt, uses the environment variable EMAIL
#- --certificatesresolvers.le.acme.email='cboivin@secure-exchanges.com'#$EMAIL
# Store the Let's Encrypt certificates in the mounted volume
#- --certificatesresolvers.le.acme.storage=/certificates/acme.json
# Use the TLS Challenge for Let's Encrypt
#- --certificatesresolvers.le.acme.tlschallenge=true
# Enable the access log, with HTTP requests
- --accesslog
# Enable the Traefik log, for configurations and errors
- --log
# Enable the Dashboard and API
- --api.insecure=true
# Docker engine
- --providers.docker.endpoint=npipe:////./pipe/docker_engine
ollama:
image: ollama/ollama
restart: unless-stopped
container_name: ollama
ports:
- '11434:11434'
volumes:
- './ollama:/root/.ollama'
ollama-webui:
image: 'ghcr.io/ollama-webui/ollama-webui:main'
restart: unless-stopped
container_name: ollama-webui
volumes:
- './ollama-webui:/app/backend/data'
depends_on:
- ollama
ports:
- 80:8080
environment:
- './ollama/api=http://ollama:11434/api'
extra_hosts:
- host.docker.internal:host-gateway
labels:
- "traefik.enable=true"
- "traefik.http.routers.ollama-webui-http.entrypoints=http"
- "traefik.http.routers.ollama-webui-http.rule=Host(`ollama.localhost/`)"
- "traefik.http.routers.ollama-webui-http.middlewares=ollama-webui-redirect"
- "traefik.http.middlewares.ollama-webui-redirect.redirectscheme.scheme=https"
- "traefik.http.routers.ollama-webui-https.entrypoints=https"
- "traefik.http.routers.ollama-webui-https.rule=Host(`ollama.localhost/`)"
- "traefik.http.routers.ollama-webui-https.tls.certResolver=letsencrypt"
- "traefik.http.routers.ollama-webui-https.service=ollama-webui"
- "traefik.http.routers.ollama-webui-https.middlewares=ollama-webui-auth"
- "traefik.http.middlewares.ollama-webui-auth.basicauth.usersfile=/etc/traefik/authorized_users"
minecraft:
image: 'itzg/minecraft-server'
restart: unless-stopped
stdin_open: true
tty: true
ports:
- "25565:25565"
volumes:
- "./mc:/data"
- "./mods:/mods:ro"
environment:
EULA: "TRUE"
TYPE: "FORGE"
ENABLE_AUTOPAUSE: "TRUE"
OVERRIDE_SERVER_PROPERTIES: "TRUE"
MAX_TICK_TIME: "-1"
AUTOPAUSE_TIMEOUT_INIT: "30"
AUTOPAUSE_TIMEOUT_EST: "10"