You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
218 lines
5.9 KiB
218 lines
5.9 KiB
3 years ago
|
version: '3.9'
|
||
|
|
||
|
x-mayan-container:
|
||
|
&mayan-container
|
||
|
depends_on:
|
||
|
- postgresql
|
||
|
- redis
|
||
|
# Enable to use RabbitMQ
|
||
|
#- rabbitmq
|
||
|
env_file: .env
|
||
|
environment:
|
||
|
# Enable to use RabbitMQ
|
||
|
# MAYAN_CELERY_BROKER_URL: amqp://${MAYAN_RABBITMQ_USER:-mayan}:${MAYAN_RABBITMQ_PASSWORD:-mayanrabbitpass}@rabbitmq:5672/${MAYAN_RABBITMQ_VHOST:-mayan}
|
||
|
# To use RabbitMQ as broker, disable Redis as broker
|
||
|
MAYAN_CELERY_BROKER_URL: redis://:${MAYAN_REDIS_PASSWORD:-mayanredispassword}@redis:6379/0
|
||
|
MAYAN_CELERY_RESULT_BACKEND: redis://:${MAYAN_REDIS_PASSWORD:-mayanredispassword}@redis:6379/1
|
||
|
MAYAN_DATABASES: "{'default':{'ENGINE':'django.db.backends.postgresql','NAME':'${MAYAN_DATABASE_NAME:-mayan}','PASSWORD':'${MAYAN_DATABASE_PASSWORD:-mayandbpass}','USER':'${MAYAN_DATABASE_USER:-mayan}','HOST':'${MAYAN_DATABASE_HOST:-postgresql}'}}"
|
||
|
MAYAN_DOCKER_WAIT: "${MAYAN_DATABASE_HOST:-postgresql}:5432 redis:6379"
|
||
|
MAYAN_LOCK_MANAGER_BACKEND: mayan.apps.lock_manager.backends.redis_lock.RedisLock
|
||
|
MAYAN_LOCK_MANAGER_BACKEND_ARGUMENTS: "{'redis_url':'redis://:${MAYAN_REDIS_PASSWORD:-mayanredispassword}@redis:6379/2'}"
|
||
|
# Replace with the line below when using RabbitMQ
|
||
|
# MAYAN_DOCKER_WAIT: "${MAYAN_DATABASE_HOST:-postgresql}:5432 redis:6379 rabbitmq:5672"
|
||
|
image: ${MAYAN_DOCKER_IMAGE_NAME:-mayanedms/mayanedms}:${MAYAN_DOCKER_IMAGE_TAG:-s4.0}
|
||
|
networks:
|
||
|
- bridge
|
||
|
restart: unless-stopped
|
||
|
volumes:
|
||
|
- ${MAYAN_APP_VOLUME:-app}:/var/lib/mayan
|
||
|
# Optional volumes to access external data like staging or watch folders
|
||
|
# - /opt/staging_files:/staging_files
|
||
|
# - /opt/watch_folder:/watch_folder
|
||
|
|
||
|
networks:
|
||
|
bridge:
|
||
|
driver: bridge
|
||
|
|
||
|
services:
|
||
|
app:
|
||
|
<<: *mayan-container
|
||
|
labels:
|
||
|
- "traefik.enable=true"
|
||
|
- "traefik.http.routers.app.rule=Host(`www.example.com`)" # Replace this with your published URL
|
||
|
- "traefik.http.routers.mayan.rule=Host(`mayan.app`)"
|
||
|
- "traefik.http.routers.mayan.entrypoints=web"
|
||
|
ports:
|
||
|
- "80:8000"
|
||
|
|
||
|
postgresql:
|
||
|
command:
|
||
|
- "postgres"
|
||
|
- "-c"
|
||
|
- "checkpoint_completion_target=0.6"
|
||
|
- "-c"
|
||
|
- "default_statistics_target=200"
|
||
|
- "-c"
|
||
|
- "maintenance_work_mem=128MB"
|
||
|
- "-c"
|
||
|
- "max_connections=200"
|
||
|
- "-c"
|
||
|
- "shared_buffers=256MB"
|
||
|
- "-c"
|
||
|
- "work_mem=8MB"
|
||
|
environment:
|
||
|
POSTGRES_DB: ${MAYAN_DATABASE_NAME:-mayan}
|
||
|
POSTGRES_PASSWORD: ${MAYAN_DATABASE_PASSWORD:-mayandbpass}
|
||
|
POSTGRES_USER: ${MAYAN_DATABASE_USER:-mayan}
|
||
|
image: postgres:${MAYAN_DOCKER_POSTGRES_TAG:-10.15-alpine}
|
||
|
networks:
|
||
|
- bridge
|
||
|
restart: unless-stopped
|
||
|
volumes:
|
||
|
- ${MAYAN_POSTGRES_VOLUME:-postgres}:/var/lib/postgresql/data
|
||
|
|
||
|
redis:
|
||
|
command:
|
||
|
- redis-server
|
||
|
- --appendonly
|
||
|
- "no"
|
||
|
- --databases
|
||
|
- "3"
|
||
|
- --maxmemory
|
||
|
- "100mb"
|
||
|
- --maxclients
|
||
|
- "500"
|
||
|
- --maxmemory-policy
|
||
|
- "allkeys-lru"
|
||
|
- --save
|
||
|
- ""
|
||
|
- --tcp-backlog
|
||
|
- "256"
|
||
|
- --requirepass
|
||
|
- "${MAYAN_REDIS_PASSWORD:-mayanredispassword}"
|
||
|
image: redis:${MAYAN_DOCKER_REDIS_TAG:-6.0-alpine}
|
||
|
networks:
|
||
|
- bridge
|
||
|
restart: unless-stopped
|
||
|
volumes:
|
||
|
- ${MAYAN_REDIS_VOLUME:-redis}:/data
|
||
|
|
||
|
# Celery flower a monitor for Celery
|
||
|
celery_flower:
|
||
|
<<: *mayan-container
|
||
|
command:
|
||
|
- run_celery
|
||
|
- flower
|
||
|
ports:
|
||
|
- "5555:5555"
|
||
|
profiles:
|
||
|
- celery_flower
|
||
|
|
||
|
# Run a frontend gunicorn container
|
||
|
frontend:
|
||
|
<<: *mayan-container
|
||
|
command:
|
||
|
- run_worker
|
||
|
- fast
|
||
|
ports:
|
||
|
- "81:8000"
|
||
|
profiles:
|
||
|
- extra_frontend
|
||
|
|
||
|
# Enable to run standalone workers
|
||
|
mountindex:
|
||
|
<<: *mayan-container
|
||
|
cap_add:
|
||
|
- SYS_ADMIN
|
||
|
devices:
|
||
|
- "/dev/fuse:/dev/fuse"
|
||
|
entrypoint:
|
||
|
- /bin/bash
|
||
|
- -c
|
||
|
- 'mkdir --parents /mnt/index && chown mayan:mayan /mnt/index && /usr/local/bin/entrypoint.sh run_command "mountindex --allow-other creation_date /mnt/index"' # Replace "creation_date" with the index of your choice.
|
||
|
profiles:
|
||
|
- mountindex
|
||
|
security_opt:
|
||
|
- apparmor:unconfined
|
||
|
volumes:
|
||
|
- type: bind
|
||
|
source: /mnt/mayan_indexes/creation_date # Host location where the index will show up.
|
||
|
target: /mnt/index # Location inside the container where the index will be mounted. Must the same is in the "entrypoint" section.
|
||
|
bind:
|
||
|
propagation: shared
|
||
|
|
||
|
# Run a separate class A worker
|
||
|
worker_a:
|
||
|
<<: *mayan-container
|
||
|
command:
|
||
|
- run_worker
|
||
|
- worker_a
|
||
|
profiles:
|
||
|
- extra_worker_a
|
||
|
|
||
|
# Run a separate class B worker
|
||
|
worker_b:
|
||
|
<<: *mayan-container
|
||
|
command:
|
||
|
- run_worker
|
||
|
- worker_b
|
||
|
profiles:
|
||
|
- extra_worker_b
|
||
|
|
||
|
# Run a separate class C worker
|
||
|
worker_c:
|
||
|
<<: *mayan-container
|
||
|
command:
|
||
|
- run_worker
|
||
|
- worker_c
|
||
|
profiles:
|
||
|
- extra_worker_c
|
||
|
|
||
|
# Run a separate class D worker
|
||
|
worker_d:
|
||
|
<<: *mayan-container
|
||
|
command:
|
||
|
- run_worker
|
||
|
- worker_d
|
||
|
profiles:
|
||
|
- extra_worker_d
|
||
|
|
||
|
# Optional services
|
||
|
|
||
|
traefik:
|
||
|
container_name: "traefik"
|
||
|
command:
|
||
|
#- "--log.level=DEBUG"
|
||
|
- "--api.insecure=true"
|
||
|
- "--providers.docker=true"
|
||
|
- "--providers.docker.exposedbydefault=false"
|
||
|
- "--entrypoints.web.address=:80"
|
||
|
image: "traefik:v2.4"
|
||
|
ports:
|
||
|
- "80:80"
|
||
|
- "8080:8080"
|
||
|
profiles:
|
||
|
- traefik
|
||
|
volumes:
|
||
|
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||
|
|
||
|
# Enable to use RabbitMQ
|
||
|
# rabbitmq:
|
||
|
# image: rabbitmq:${MAYAN_DOCKER_RABBITMQ_TAG:-3.8-alpine}
|
||
|
# environment:
|
||
|
# RABBITMQ_DEFAULT_USER: ${MAYAN_RABBITMQ_USER:-mayan}
|
||
|
# RABBITMQ_DEFAULT_PASS: ${MAYAN_RABBITMQ_PASSWORD:-mayanrabbitpass}
|
||
|
# RABBITMQ_DEFAULT_VHOST: ${MAYAN_RABBITMQ_VHOST:-mayan}
|
||
|
# networks:
|
||
|
# - bridge
|
||
|
# restart: unless-stopped
|
||
|
# volumes:
|
||
|
# - ${MAYAN_RABBITMQ_VOLUME:-rabbitmq}:/var/lib/rabbitmq
|
||
|
|
||
|
volumes:
|
||
|
app:
|
||
|
postgres:
|
||
|
mountindex:
|
||
|
rabbitmq:
|
||
|
redis:
|