240 lines
8.7 KiB
YAML
240 lines
8.7 KiB
YAML
# before stopping only-office execute:
|
||
# docker exec <CONTAINER> documentserver-prepare4shutdown.sh
|
||
#
|
||
# https://gist.github.com/kvaps/6ac945e6c2e2e41bd536b7486a7dea4a
|
||
|
||
name: onlyoffice
|
||
|
||
secrets:
|
||
onlyoffice_postgresql_database:
|
||
file: ${SECRETSDIR}/onlyoffice_postgresql_database
|
||
onlyoffice_postgresql_password:
|
||
file: ${SECRETSDIR}/onlyoffice_postgresql_password
|
||
onlyoffice_postgresql_username:
|
||
file: ${SECRETSDIR}/onlyoffice_postgresql_username
|
||
onlyoffice_jwt_secret:
|
||
file: ${SECRETSDIR}/onlyoffice_jwt_secret
|
||
onlyoffice_redis_password:
|
||
file: ${SECRETSDIR}/onlyoffice_redis_password
|
||
|
||
networks:
|
||
traefik-net:
|
||
external: true
|
||
postgres-net:
|
||
external: true
|
||
backend:
|
||
name: onlyoffice-net
|
||
driver: bridge
|
||
driver_opts:
|
||
com.docker.network.bridge.name: "br-onlyoffice"
|
||
|
||
services:
|
||
documentserver:
|
||
image: "onlyoffice/documentserver:latest"
|
||
hostname: onlyoffice_documentserver
|
||
env_file: .documentserver.env
|
||
privileged: true
|
||
stdin_open: true
|
||
tty: true
|
||
volumes:
|
||
- /etc/localtime:/etc/localtime:ro
|
||
- /run/dbus:/run/dbus:ro
|
||
- "${DATADIR}/redis:/var/lib/redis"
|
||
- "${DATADIR}/rabbitmq:/var/lib/rabbitmq"
|
||
- "${DATADIR}/pgdata:/var/lib/postgresql"
|
||
- "${DATADIR}/documentserver/logs:/var/log/onlyoffice"
|
||
- "${DATADIR}/documentserver/data:/var/www/onlyoffice/Data"
|
||
- "${DATADIR}/documentserver/lib:/var/lib/onlyoffice"
|
||
# - "${DATADIR}/documentserver/public:/var/www/onlyoffice/documentserver-example/public/files"
|
||
# - "${DATADIR}/documentserver/fonts:/usr/share/fonts"
|
||
networks:
|
||
- traefik-net
|
||
- backend
|
||
- postgres-net
|
||
secrets:
|
||
- onlyoffice_postgresql_database
|
||
- onlyoffice_postgresql_password
|
||
- onlyoffice_postgresql_username
|
||
- onlyoffice_jwt_secret
|
||
- onlyoffice_redis_password
|
||
environment:
|
||
# The IP address or the name of the host where the database server is running.
|
||
DB_HOST: onlyoffice_postgresql
|
||
# The IP address or the name of the host where the Redis server is running.
|
||
REDIS_SERVER_HOST: onlyoffice_rabbitmq
|
||
# The AMQP URI to connect to message broker server.
|
||
AMQP_URI: amqp://guest:guest@onlyoffice_rabbitmq
|
||
depends_on:
|
||
postgresql:
|
||
condition: service_healthy
|
||
rabbitmq:
|
||
condition: service_healthy
|
||
redis:
|
||
condition: service_started
|
||
restart: unless-stopped
|
||
stop_grace_period: 60s
|
||
labels:
|
||
- traefik.enable=true
|
||
- traefik.docker.network=traefik-net
|
||
#
|
||
- "traefik.http.middlewares.onlyoffice_documentserver-https-redirect.redirectscheme.scheme=https"
|
||
- "traefik.http.middlewares.onlyoffice_documentserver-https-redirect.redirectscheme.permanent=true"
|
||
#
|
||
- "traefik.http.services.onlyoffice_documentserver-svc.loadbalancer.server.port=${WEBUI_PORT}"
|
||
#
|
||
- "traefik.http.routers.onlyoffice_documentserver-rtr.entrypoints=web"
|
||
- "traefik.http.routers.onlyoffice_documentserver-rtr.rule=Host(`onlyoffice.${DOMAINNAME}`)&& PathPrefix(`/`)"
|
||
- "traefik.http.routers.onlyoffice_documentserver-rtr.middlewares=onlyoffice_documentserver-https-redirect"
|
||
- "traefik.http.routers.onlyoffice_documentserver-rtr.service=onlyoffice_documentserver-svc"
|
||
#
|
||
- "traefik.http.routers.onlyoffice_documentserver-secure-rtr.entrypoints=websecure"
|
||
- "traefik.http.routers.onlyoffice_documentserver-secure-rtr.rule=Host(`onlyoffice.${DOMAINNAME}`)&& PathPrefix(`/`)"
|
||
- "traefik.http.routers.onlyoffice_documentserver-secure-rtr.tls=true"
|
||
- "traefik.http.routers.onlyoffice_documentserver-secure-rtr.tls.certresolver=sthomeresolver"
|
||
- "traefik.http.routers.onlyoffice_documentserver-secure-rtr.service=onlyoffice_documentserver-svc"
|
||
|
||
rabbitmq:
|
||
image: rabbitmq
|
||
restart: unless-stopped
|
||
healthcheck:
|
||
test: rabbitmq-diagnostics -q ping
|
||
interval: 30s
|
||
timeout: 30s
|
||
retries: 3
|
||
networks:
|
||
backend:
|
||
aliases: ["onlyoffice_rabbitmq"]
|
||
|
||
# https://stackoverflow.com/questions/66738931/how-to-set-password-for-redis-server
|
||
# I managed to set the password permanently for the default user. Adding these 2 parameters in the file "redis.conf" requirepass newpass123 masterauth newpass123 And in the file "sentinel.conf" sentinel auth-pass mymaster newpass123 Thanks –
|
||
#user14867757
|
||
# CommentedMar 24, 2021 at 4:19
|
||
redis:
|
||
image: docker.io/library/redis:alpine
|
||
#command: --save 60 1 --loglevel warning
|
||
command: sh -c "redis-server --requirepass ${REDIS_PASSWORD}" && --save 60 1 && --loglevel warning
|
||
env_file: .redis.env
|
||
restart: unless-stopped
|
||
expose:
|
||
- ${REDIS_PORT}
|
||
# healthcheck:
|
||
# test: ["CMD-SHELL", "redis-cli ping | grep PONG"]
|
||
# start_period: 20s
|
||
# interval: 30s
|
||
# retries: 5
|
||
# timeout: 3s
|
||
secrets:
|
||
- onlyoffice_redis_password
|
||
networks:
|
||
backend:
|
||
aliases: ["onlyoffice_redis"]
|
||
volumes:
|
||
- "$DATADIR/redis/data:/data"
|
||
|
||
# mailserver:
|
||
# init: true
|
||
# hostname: "mail.${DOMAINNAME}"
|
||
# image: onlyoffice/mailserver
|
||
# env_file: .mailserver.env
|
||
# networks:
|
||
# backend:
|
||
# aliases: ["onlyoffice_mailserver"]
|
||
# privileged: true
|
||
# stdin_open: true
|
||
# tty: true
|
||
# restart: always
|
||
# ports:
|
||
# - 25:25
|
||
# - 143:143
|
||
# - 587:587
|
||
# environment:
|
||
# MYSQL_SERVER: onlyoffice_mysql
|
||
# volumes:
|
||
# - "${BULKSTORE}/mailserver/data:/var/vmail"
|
||
# - "${DATADIR}/mailserver/data/certs:/etc/pki/tls/mailserver"
|
||
# - "${DATADIR}/mailserver/logs:/var/log"
|
||
#
|
||
# communityserver:
|
||
# image: onlyoffice/communityserver
|
||
# env_file: .communityserver.env
|
||
# networks:
|
||
# backend:
|
||
# aliases: ["onlyoffice_communityserver"]
|
||
# stdin_open: true
|
||
# tty: true
|
||
# privileged: true
|
||
# restart: always
|
||
## ports:
|
||
## - 80:80
|
||
## - 443:443
|
||
## - 5222:5222
|
||
# cgroup: host
|
||
# environment:
|
||
# MYSQL_SERVER_HOST: onlyoffice_mysql
|
||
# MAIL_SERVER_DB_HOST: onlyoffice_mysql
|
||
# DOCUMENT_SERVER_PORT_80_TCP_ADDR: onlyoffice_documentserver
|
||
# volumes:
|
||
# - "${DATADIR}/communityserver/data:/var/www/onlyoffice/Data"
|
||
# - "${DATADIR}/communityserver/logs:/var/log/onlyoffice"
|
||
# - "${DATADIR}/communityserver/letsencrypt:/etc/letsencrypt"
|
||
# - "/sys/fs/cgroup:/sys/fs/cgroup:rw"
|
||
# labels:
|
||
# - traefik.enable=true
|
||
# - traefik.docker.network=traefik-net
|
||
# #
|
||
# - "traefik.http.middlewares.onlyoffice_communityserver-https-redirect.redirectscheme.scheme=https"
|
||
# - "traefik.http.middlewares.onlyoffice_communityserver-https-redirect.redirectscheme.permanent=true"
|
||
# #
|
||
# - "traefik.http.services.onlyoffice_communityserver-svc.loadbalancer.server.port=${WEBUI_PORT}"
|
||
# #
|
||
# - "traefik.http.routers.onlyoffice_communityserver-rtr.entrypoints=web"
|
||
# - "traefik.http.routers.onlyoffice_communityserver-rtr.rule=Host(`onlyoffice_communityserver.${DOMAINNAME}`)&& PathPrefix(`/`)"
|
||
# - "traefik.http.routers.onlyoffice_communityserver-rtr.middlewares=onlyoffice_communityserver-https-redirect"
|
||
# - "traefik.http.routers.onlyoffice_communityserver-rtr.service=onlyoffice_communityserver-svc"
|
||
# #
|
||
# - "traefik.http.routers.onlyoffice_communityserver-secure-rtr.entrypoints=websecure"
|
||
# - "traefik.http.routers.onlyoffice_communityserver-secure-rtr.rule=Host(`onlyoffice_communityserver.${DOMAINNAME}`)&& PathPrefix(`/`)"
|
||
# - "traefik.http.routers.onlyoffice_communityserver-secure-rtr.tls=true"
|
||
# - "traefik.http.routers.onlyoffice_communityserver-secure-rtr.tls.certresolver=sthomeresolver"
|
||
# - "traefik.http.routers.onlyoffice_communityserver-secure-rtr.service=onlyoffice_communityserver-svc"
|
||
|
||
postgresql:
|
||
image: postgres:16-alpine
|
||
hostname: "onlyoffice_postgresql"
|
||
shm_size: 128mb # https://hub.docker.com/_/postgres
|
||
restart: unless-stopped
|
||
env_file: .postgresql.env
|
||
healthcheck:
|
||
test: ["CMD-SHELL", "pg_isready -d $${POSTGRES_DB} -U $${POSTGRES_USER}"]
|
||
start_period: 20s
|
||
interval: 30s
|
||
retries: 5
|
||
timeout: 5s
|
||
networks:
|
||
postgres-net:
|
||
aliases: ["onlyoffice_postgresql"]
|
||
secrets:
|
||
- onlyoffice_postgresql_database
|
||
- onlyoffice_postgresql_password
|
||
- onlyoffice_postgresql_username
|
||
volumes:
|
||
- "${DATADIR}/pgdata:/var/lib/postgresql/data"
|
||
- "${DATADIR}/pgbackups:/mnt/backups"
|
||
|
||
# mysql:
|
||
# image: mysql:5.7
|
||
# restart: always
|
||
# env_file: .mysql.env
|
||
# networks:
|
||
# backend:
|
||
# aliases: ["onlyoffice_mysql"]
|
||
# ports:
|
||
# # <Port exposed> : <MySQL Port running inside container>
|
||
# - '3306:3306'
|
||
# expose:
|
||
# # Opens port 3306 on the container
|
||
# - '3306'
|
||
# # Where our data will be persisted
|
||
# volumes:
|
||
# - "${DATADIR}/mysqldata:/var/lib/mysql"
|