mirror of
https://gitlab.com/allianceauth/allianceauth.git
synced 2025-07-09 04:20:17 +02:00
205 lines
5.2 KiB
YAML
205 lines
5.2 KiB
YAML
version: '3.8'
|
|
|
|
x-allianceauth-base: &allianceauth-base
|
|
image: ${AA_DOCKER_TAG?err}
|
|
# build:
|
|
# context: .
|
|
# dockerfile: custom.dockerfile
|
|
# args:
|
|
# AA_DOCKER_TAG: ${AA_DOCKER_TAG?err}
|
|
restart: always
|
|
env_file:
|
|
- ./.env
|
|
volumes:
|
|
- ./conf/local.py:/home/allianceauth/myauth/myauth/settings/local.py
|
|
- ./conf/celery.py:/home/allianceauth/myauth/myauth/celery.py
|
|
- ./conf/urls.py:/home/allianceauth/myauth/myauth/urls.py
|
|
- ./conf/memory_check.sh:/memory_check.sh
|
|
- ./templates:/home/allianceauth/myauth/myauth/templates/
|
|
- static-volume:/var/www/myauth/static
|
|
depends_on:
|
|
- redis
|
|
- auth_mysql
|
|
working_dir: /home/allianceauth/myauth/
|
|
stop_grace_period: 10m
|
|
logging:
|
|
driver: "json-file"
|
|
options:
|
|
max-size: "50Mb"
|
|
max-file: "5"
|
|
|
|
x-allianceauth-health-check: &allianceauth-health-checks
|
|
healthcheck:
|
|
test: [
|
|
"CMD",
|
|
"/memory_check.sh",
|
|
"500000000"
|
|
]
|
|
interval: 60s
|
|
timeout: 10s
|
|
retries: 3
|
|
start_period: 5m
|
|
labels:
|
|
- "autoheal=true"
|
|
|
|
services:
|
|
auth_mysql:
|
|
image: mariadb:10.11
|
|
command: [mysqld, --character-set-server=utf8mb4, --collation-server=utf8mb4_unicode_ci, --default-authentication-plugin=mysql_native_password]
|
|
volumes:
|
|
- ./mysql-data:/var/lib/mysql
|
|
- ./setup.sql:/docker-entrypoint-initdb.d/setup.sql
|
|
environment:
|
|
- MYSQL_ROOT_PASSWORD=${AA_DB_ROOT_PASSWORD?err}
|
|
- MARIADB_MYSQL_LOCALHOST_USER=1
|
|
healthcheck:
|
|
test: ["CMD", "healthcheck.sh", "--su=mysql", "--connect", "--innodb_initialized"]
|
|
restart: unless-stopped
|
|
logging:
|
|
driver: "json-file"
|
|
options:
|
|
max-size: "10Mb"
|
|
max-file: "5"
|
|
|
|
nginx:
|
|
image: nginx:1.25
|
|
restart: always
|
|
volumes:
|
|
- ./conf/nginx.conf:/etc/nginx/conf.d/default.conf
|
|
- static-volume:/var/www/myauth/static
|
|
depends_on:
|
|
- allianceauth_gunicorn
|
|
logging:
|
|
driver: "json-file"
|
|
options:
|
|
max-size: "10Mb"
|
|
max-file: "5"
|
|
|
|
redis:
|
|
image: redis:7
|
|
command: redis-server
|
|
restart: always
|
|
volumes:
|
|
- "redis-data:/data"
|
|
- ./conf/redis_healthcheck.sh:/usr/local/bin/redis_healthcheck.sh
|
|
healthcheck:
|
|
test: ["CMD", "bash", "/usr/local/bin/redis_healthcheck.sh"]
|
|
logging:
|
|
driver: "json-file"
|
|
options:
|
|
max-size: "10Mb"
|
|
max-file: "5"
|
|
|
|
allianceauth_gunicorn:
|
|
ports:
|
|
- 8000:8000
|
|
container_name: allianceauth_gunicorn
|
|
<<: [*allianceauth-base]
|
|
entrypoint: [
|
|
"gunicorn",
|
|
"myauth.wsgi",
|
|
"--bind=0.0.0.0:8000",
|
|
"--workers=3",
|
|
"--timeout=120",
|
|
"--max-requests=500",
|
|
"--max-requests-jitter=50"
|
|
]
|
|
|
|
allianceauth_beat:
|
|
container_name: allianceauth_worker_beat
|
|
<<: [*allianceauth-base]
|
|
entrypoint: [
|
|
"celery",
|
|
"-A",
|
|
"myauth",
|
|
"beat"
|
|
]
|
|
|
|
allianceauth_worker:
|
|
<<: [*allianceauth-base, *allianceauth-health-checks]
|
|
entrypoint: [
|
|
"celery",
|
|
"-A",
|
|
"myauth",
|
|
"worker",
|
|
"--pool=threads",
|
|
"--concurrency=5",
|
|
"-n",
|
|
"worker_%n"
|
|
]
|
|
deploy:
|
|
replicas: 2
|
|
|
|
grafana:
|
|
image: grafana/grafana-oss:9.5.2
|
|
restart: always
|
|
depends_on:
|
|
- auth_mysql
|
|
volumes:
|
|
- ./grafana-datasource.yml:/etc/grafana/provisioning/datasources/datasource.yaml
|
|
- ./grafana-dashboards.yml:/etc/grafana/provisioning/dashboards/datasource.yaml
|
|
- ./grafana/dashboards:/var/lib/grafana/dashboards:ro
|
|
- grafana-data:/var/lib/grafana
|
|
environment:
|
|
GF_INSTALL_PLUGINS: grafana-piechart-panel,grafana-clock-panel,grafana-simple-json-datasource
|
|
GF_SECURITY_ADMIN_USERNAME: ${GF_SECURITY_ADMIN_USERNAME}
|
|
GF_SECURITY_ADMIN_PASSWORD: ${GF_SECURITY_ADMIN_PASSWORD}
|
|
GF_AUTH_DATABASE_PASSWORD: ${GRAFANA_DB_PASSWORD}
|
|
logging:
|
|
driver: "json-file"
|
|
options:
|
|
max-size: "10Mb"
|
|
max-file: "5"
|
|
|
|
proxy:
|
|
image: jc21/nginx-proxy-manager:latest
|
|
restart: always
|
|
ports:
|
|
- ${PROXY_HTTP_PORT:-80}:80
|
|
- ${PROXY_DASH_PORT:-81}:81
|
|
- ${PROXY_HTTPS_PORT:-443}:443
|
|
# Uncomment this section to use a dedicated database for Nginx Proxy Manager
|
|
# environment:
|
|
# DB_MYSQL_HOST: "proxy-db"
|
|
# DB_MYSQL_PORT: 3306
|
|
# DB_MYSQL_USER: "npm"
|
|
# DB_MYSQL_PASSWORD: "${PROXY_MYSQL_PASS?err}"
|
|
# DB_MYSQL_NAME: "npm"
|
|
volumes:
|
|
- proxy-data:/data
|
|
- proxy-le:/etc/letsencrypt
|
|
healthcheck:
|
|
test: ["CMD", "/bin/check-health"]
|
|
logging:
|
|
driver: "json-file"
|
|
options:
|
|
max-size: "10Mb"
|
|
max-file: "5"
|
|
|
|
# Uncomment this section to use a dedicated database for Nginx Proxy Manager
|
|
# proxy-db:
|
|
# image: 'jc21/mariadb-aria:latest'
|
|
# restart: always
|
|
# environment:
|
|
# MYSQL_ROOT_PASSWORD: "${PROXY_MYSQL_PASS_ROOT?err}"
|
|
# MYSQL_DATABASE: 'npm'
|
|
# MYSQL_USER: 'npm'
|
|
# MYSQL_PASSWORD: "${PROXY_MYSQL_PASS?err}"
|
|
# ports:
|
|
# - 3306
|
|
# volumes:
|
|
# - proxy-db:/var/lib/mysql
|
|
# logging:
|
|
# driver: "json-file"
|
|
# options:
|
|
# max-size: "1Mb"
|
|
# max-file: "5"
|
|
|
|
volumes:
|
|
redis-data:
|
|
static-volume:
|
|
grafana-data:
|
|
proxy-data:
|
|
proxy-le:
|
|
proxy-db:
|