services: database: image: "zulip/zulip-postgresql:14" restart: unless-stopped environment: POSTGRES_DB: "zulip" POSTGRES_USER: "zulip" ## Note that you need to do a manual `ALTER ROLE` query if you ## change this on a system after booting the postgres container ## the first time on a host. Instructions are available in README.md. POSTGRES_PASSWORD: "REPLACE_WITH_SECURE_POSTGRES_PASSWORD" volumes: - "postgresql-14:/var/lib/postgresql/data:rw" memcached: image: "memcached:alpine" restart: unless-stopped command: - "sh" - "-euc" - | echo 'mech_list: plain' > "$$SASL_CONF_PATH" echo "zulip@$$HOSTNAME:$$MEMCACHED_PASSWORD" > "$$MEMCACHED_SASL_PWDB" echo "zulip@localhost:$$MEMCACHED_PASSWORD" >> "$$MEMCACHED_SASL_PWDB" exec memcached -S environment: SASL_CONF_PATH: "/home/memcache/memcached.conf" MEMCACHED_SASL_PWDB: "/home/memcache/memcached-sasl-db" MEMCACHED_PASSWORD: "REPLACE_WITH_SECURE_MEMCACHED_PASSWORD" rabbitmq: image: "rabbitmq:3.12.14" restart: unless-stopped environment: RABBITMQ_DEFAULT_USER: "zulip" RABBITMQ_DEFAULT_PASS: "REPLACE_WITH_SECURE_RABBITMQ_PASSWORD" volumes: - "rabbitmq:/var/lib/rabbitmq:rw" redis: image: "redis:alpine" restart: unless-stopped command: - "sh" - "-euc" - | echo "requirepass '$$REDIS_PASSWORD'" > /etc/redis.conf exec redis-server /etc/redis.conf environment: REDIS_PASSWORD: "REPLACE_WITH_SECURE_REDIS_PASSWORD" volumes: - "redis:/data:rw" zulip: image: "zulip/docker-zulip:9.4-0" restart: unless-stopped build: context: . args: ## Change these if you want to build zulip from a different repo/branch ZULIP_GIT_URL: https://github.com/zulip/zulip.git ZULIP_GIT_REF: "9.4" ## Set this up if you plan to use your own CA certificate bundle for building # CUSTOM_CA_CERTIFICATES: ports: - "80:80" - "443:443" environment: ## See https://github.com/zulip/docker-zulip#configuration for ## details on this section and how to discover the many ## additional settings that are supported here. DB_HOST: "database" DB_HOST_PORT: "5432" DB_USER: "zulip" SSL_CERTIFICATE_GENERATION: "self-signed" SETTING_MEMCACHED_LOCATION: "memcached:11211" SETTING_RABBITMQ_HOST: "rabbitmq" SETTING_REDIS_HOST: "redis" SECRETS_email_password: "123456789" ## These should match RABBITMQ_DEFAULT_PASS, POSTGRES_PASSWORD, ## MEMCACHED_PASSWORD, and REDIS_PASSWORD above. SECRETS_rabbitmq_password: "REPLACE_WITH_SECURE_RABBITMQ_PASSWORD" SECRETS_postgres_password: "REPLACE_WITH_SECURE_POSTGRES_PASSWORD" SECRETS_memcached_password: "REPLACE_WITH_SECURE_MEMCACHED_PASSWORD" SECRETS_redis_password: "REPLACE_WITH_SECURE_REDIS_PASSWORD" SECRETS_secret_key: "REPLACE_WITH_SECURE_SECRET_KEY" SETTING_EXTERNAL_HOST: "localhost.localdomain" SETTING_ZULIP_ADMINISTRATOR: "admin@example.com" SETTING_EMAIL_HOST: "" # e.g. smtp.example.com SETTING_EMAIL_HOST_USER: "noreply@example.com" SETTING_EMAIL_PORT: "587" ## It seems that the email server needs to use ssl or tls and can't be used without it SETTING_EMAIL_USE_SSL: "False" SETTING_EMAIL_USE_TLS: "True" ZULIP_AUTH_BACKENDS: "EmailAuthBackend" ## Uncomment this when configuring the mobile push notifications service # SETTING_ZULIP_SERVICE_PUSH_NOTIFICATIONS: "True" # SETTING_ZULIP_SERVICE_SUBMIT_USAGE_STATISTICS: "True" ## If you're using a reverse proxy, you'll want to provide the ## comma-separated set of IP addresses to trust here. # LOADBALANCER_IPS: "", ## By default, files uploaded by users and profile pictures are ## stored directly on the Zulip server. You can configure files ## to be stored in Amazon S3 or a compatible data store ## here. See docs at: ## ## https://zulip.readthedocs.io/en/latest/production/upload-backends.html ## ## If you want to use the S3 backend, you must set ## SETTINGS_LOCAL_UPLOADS_DIR to None as well as configuring the ## other fields. # SETTINGS_LOCAL_UPLOADS_DIR: "None" # SETTINGS_S3_AUTH_UPLOADS_BUCKET: "" # SETTINGS_S3_AVATAR_BUCKET: "" # SETTINGS_S3_ENDPOINT_URL: "None" # SETTINGS_S3_REGION: "None" volumes: - "zulip:/data:rw" ulimits: nofile: soft: 1000000 hard: 1048576 volumes: zulip: postgresql-14: rabbitmq: redis: