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.
217 lines
5.9 KiB
217 lines
5.9 KiB
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:
|
|
|