Lewati ke isi

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