Penggunaan MayanEDMS dengan Traefik
Docker Compose
version: '3.7'
networks:
frontend:
backend:
services:
traefik:
image: "traefik:v2.1.4"
networks:
- frontend
- backend
ports:
- "443:443"
- "8080:8080"
deploy:
placement:
constraints: [node.hostname == docker-node01]
command:
- "--api.insecure=true"
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
- "--entrypoints.websecure.address=:443"
- "--certificatesresolvers.mytlschallenge.acme.tlschallenge=true"
- "--certificatesresolvers.mytlschallenge.acme.email=${LE_EMAIL}"
- "--certificatesresolvers.mytlschallenge.acme.storage=/letsencrypt/acme.json"
volumes:
- ~/vols/letsencrypt:/letsencrypt
- /var/run/docker.sock:/var/run/docker.sock:ro
db:
image: postgres:10.12-alpine
networks:
- backend
# ports:
# - "5432:5432"
deploy:
placement:
constraints: [node.hostname == docker-node01]
restart_policy:
condition: on-failure
restart: unless-stopped
environment:
POSTGRES_DB: ${MAYAN_POSTGRES_DB}
POSTGRES_PASSWORD: ${MAYAN_POSTGRES_PASS}
POSTGRES_USER: ${MAYAN_POSTGRES_USER}
volumes:
- ~/vols/mayan-edms/db:/var/lib/postgresql/data
app:
image: mayanedms/mayanedms:3.3.14
depends_on:
- cache
- traefik
- db
ports:
- "8000:8000"
deploy:
restart_policy:
condition: on-failure
restart: unless-stopped
environment: &mayan_env
# Enable to use RabbitMQ
MAYAN_CELERY_BROKER_URL: amqp://mayan:${MAYAN_RABBIT_PASS}@broker:5672/mayan
# Disable Redis Broker to use RabbitMQ as Broker
# MAYAN_CELERY_BROKER_URL: redis://:${MAYAN_REDIS_PASSWORD}@cache:6379/0
MAYAN_CELERY_RESULT_BACKEND: redis://:${MAYAN_REDIS_PASSWORD}@cache:6379/1
MAYAN_DATABASES: "{'default':{'ENGINE':'django.db.backends.postgresql','NAME':'${MAYAN_POSTGRES_DB}','PASSWORD':'${MAYAN_POSTGRES_PASS}','USER':'${MAYAN_POSTGRES_USER}','HOST':'db'}}"
EMAIL_BACKEND: django.core.mail.backends.smtp.EmailBackend
EMAIL_HOST: smtp.mailgun.org
EMAIL_HOST_PASSWORD: '${MAILGUN_TOKEN}'
EMAIL_HOST_USER: '${MAILGUN_USER}'
EMAIL_PORT: 587
# EMAIL_TIMEOUT: null
EMAIL_USE_TLS: 'true'
volumes:
- ~/vols/mayan-edms/app:/var/lib/mayan
labels:
traefik.enable: "true"
traefik.http.routers.mayan.rule: "Host(`${MAYAN_FQDN}`)"
traefik.http.routers.mayan.entrypoints: "websecure"
traefik.http.routers.mayan.tls.certresolver: "mytlschallenge"
cache:
image: redis:5.0-alpine
networks:
- backend
# ports:
# - "6379:6379"
deploy:
restart_policy:
condition: on-failure
delay: 5s
max_attempts: 3
window: 30s
restart: unless-stopped
command:
- redis-server
- --databases
- "2"
- --maxmemory-policy
- allkeys-lru
- --save
- ""
- --requirepass ${MAYAN_REDIS_PASSWORD}
volumes:
- ~/vols/mayan-edms/cache:/data
# Optional services
celery_flower:
image: mayanedms/mayanedms:3.3.14
depends_on:
- db
- cache
# Enable to use RabbitMQ
- broker
networks:
- backend
ports:
- "5555:5555"
deploy:
restart_policy:
condition: on-failure
restart: unless-stopped
command:
- run_celery
- flower
environment:
<<: *mayan_env
# Enable to use RabbitMQ
broker:
image: healthcheck/rabbitmq
networks:
- backend
# ports:
# - "5672:5672"
deploy:
restart_policy:
condition: on-failure
restart: unless-stopped
environment:
RABBITMQ_DEFAULT_USER: ${MAYAN_RABBITMQ_USER}
RABBITMQ_DEFAULT_PASS: ${MAYAN_RABBITMQ_PASS}
RABBITMQ_DEFAULT_VHOST: ${MAYAN_RABBITMQ_VHOST}
volumes:
- ~/vols/mayan-edms/broker:/var/lib/rabbitmq
# Enable to run standalone workers
worker_fast:
image: mayanedms/mayanedms:3.3.14
networks:
- backend
depends_on:
- db
- cache
# Enable to use RabbitMQ
- broker
deploy:
restart_policy:
condition: on-failure
restart: unless-stopped
command:
- run_worker
- fast
environment:
<<: *mayan_env
volumes:
- ~/vols/mayan-edms/app:/var/lib/mayan