# ONLYOFFICE DocumentServer Docker Compose Configuration # All services run with hardcoded credentials - no environment variables needed # Works on both ARM64 and AMD64 architectures services: # =========================================== # ONLYOFFICE DocumentServer - Main Service # =========================================== onlyoffice-documentserver: build: context: . args: - PACKAGE_VERSION=9.2.0 image: onlyoffice/documentserver:9.2.0 container_name: onlyoffice-documentserver depends_on: onlyoffice-postgresql: condition: service_healthy onlyoffice-rabbitmq: condition: service_healthy environment: # Database Configuration - DB_TYPE=postgres - DB_HOST=onlyoffice-postgresql - DB_PORT=5432 - DB_NAME=onlyoffice - DB_USER=onlyoffice - DB_PWD=onlyoffice # RabbitMQ Configuration - AMQP_URI=amqp://guest:guest@onlyoffice-rabbitmq:5672 - AMQP_SERVER_HOST=onlyoffice-rabbitmq - AMQP_SERVER_PORT=5672 - AMQP_SERVER_USER=guest - AMQP_SERVER_PWD=guest # Redis Configuration (using built-in Redis) - REDIS_SERVER_HOST=localhost - REDIS_SERVER_PORT=6379 - REDIS_ENABLED=true # JWT Configuration (disabled for simplicity) - JWT_ENABLED=false - JWT_SECRET=secret - JWT_HEADER=Authorization - JWT_IN_BODY=false # Other settings - WOPI_ENABLED=false - GENERATE_FONTS=true - PLUGINS_ENABLED=true - DS_LOG_LEVEL=WARN ports: - '80:80' - '443:443' healthcheck: test: ["CMD", "curl", "-f", "http://localhost/healthcheck"] interval: 30s retries: 5 start_period: 120s timeout: 10s stdin_open: true restart: always stop_grace_period: 60s volumes: - ds_data:/var/www/onlyoffice/Data - ds_logs:/var/log/onlyoffice - ds_cache:/var/lib/onlyoffice/documentserver/App_Data/cache/files - ds_fonts:/usr/share/fonts/truetype/custom # =========================================== # PostgreSQL Database # =========================================== onlyoffice-postgresql: container_name: onlyoffice-postgresql image: postgres:16 environment: - POSTGRES_DB=onlyoffice - POSTGRES_USER=onlyoffice - POSTGRES_PASSWORD=onlyoffice - POSTGRES_HOST_AUTH_METHOD=md5 restart: always expose: - '5432' volumes: - postgresql_data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U onlyoffice -d onlyoffice"] interval: 10s retries: 5 start_period: 10s timeout: 5s # =========================================== # RabbitMQ Message Broker # =========================================== onlyoffice-rabbitmq: container_name: onlyoffice-rabbitmq image: rabbitmq:3-management hostname: onlyoffice-rabbitmq environment: - RABBITMQ_DEFAULT_USER=guest - RABBITMQ_DEFAULT_PASS=guest restart: always expose: - '5672' - '15672' volumes: - rabbitmq_data:/var/lib/rabbitmq healthcheck: test: ["CMD", "rabbitmq-diagnostics", "status"] interval: 10s retries: 5 start_period: 30s timeout: 10s # =========================================== # Persistent Volumes # =========================================== volumes: postgresql_data: driver: local rabbitmq_data: driver: local ds_data: driver: local ds_logs: driver: local ds_cache: driver: local ds_fonts: driver: local # =========================================== # Network Configuration # =========================================== networks: default: name: onlyoffice-network driver: bridge