Page MenuHomePhorge

docker-compose.yml
No OneTemporary

Authored By
Unknown
Size
6 KB
Referenced Files
None
Subscribers
None

docker-compose.yml

version: '3'
services:
coturn:
build:
context: ./docker/coturn/
container_name: kolab-coturn
healthcheck:
interval: 10s
test: "kill -0 $$(cat /tmp/turnserver.pid)"
timeout: 5s
retries: 30
environment:
- TURN_PUBLIC_IP=${COTURN_PUBLIC_IP}
- TURN_LISTEN_PORT=3478
- TURN_STATIC_SECRET=${COTURN_STATIC_SECRET}
hostname: sturn.mgmt.com
image: kolab-coturn
network_mode: host
restart: on-failure
roundcube:
build:
context: ./docker/roundcube/
args:
GIT_REF_ROUNDCUBEMAIL: ${GIT_REF_ROUNDCUBEMAIL}
GIT_REMOTE_ROUNDCUBEMAIL: ${GIT_REMOTE_ROUNDCUBEMAIL}
GIT_REF_ROUNDCUBEMAIL_PLUGINS: ${GIT_REF_ROUNDCUBEMAIL_PLUGINS}
GIT_REMOTE_ROUNDCUBEMAIL_PLUGINS: ${GIT_REMOTE_ROUNDCUBEMAIL_PLUGINS}
GIT_REF_CHWALA: ${GIT_REF_CHWALA}
GIT_REMOTE_CHWALA: ${GIT_REMOTE_CHWALA}
GIT_REF_SYNCROTON: ${GIT_REF_SYNCROTON}
GIT_REMOTE_SYNCROTON: ${GIT_REMOTE_SYNCROTON}
GIT_REF_AUTOCONF: ${GIT_REF_AUTOCONF}
GIT_REMOTE_AUTOCONF: ${GIT_REMOTE_AUTOCONF}
GIT_REF_IRONY: ${GIT_REF_IRONY}
GIT_REMOTE_IRONY: ${GIT_REMOTE_IRONY}
GIT_REF_FREEBUSY: ${GIT_REF_FREEBUSY}
GIT_REMOTE_FREEBUSY: ${GIT_REMOTE_FREEBUSY}
container_name: kolab-roundcube
hostname: roundcube.hosted.com
restart: on-failure
depends_on:
mariadb:
condition: service_healthy
pdns:
condition: service_healthy
environment:
- APP_DOMAIN=${APP_DOMAIN}
- DB_HOST=mariadb
- DB_ROOT_PASSWORD=${DB_ROOT_PASSWORD}
- DB_RC_DATABASE=roundcube
- DB_RC_USERNAME=roundcube
- DB_RC_PASSWORD=${DB_PASSWORD:?"DB_PASSWORD is missing"}
- IMAP_HOST=imap
- IMAP_PORT=11143
- IMAP_ADMIN_LOGIN=${IMAP_ADMIN_LOGIN}
- IMAP_ADMIN_PASSWORD=${IMAP_ADMIN_PASSWORD}
- MAIL_HOST=postfix
- MAIL_PORT=10587
healthcheck:
interval: 10s
test: "kill -0 $$(cat /run/httpd/httpd.pid)"
timeout: 5s
retries: 30
# This makes docker's dns, resolve via pdns for this container.
# Please note it does not affect /etc/resolv.conf
dns: 172.18.0.11
image: roundcube
extra_hosts:
- "${APP_DOMAIN}:172.18.0.7"
networks:
kolab:
ipv4_address: 172.18.0.9
ports:
- "8080:8080"
tmpfs:
- /tmp
- /var/tmp
volumes:
- ./ext/:/src.orig/:ro
- roundcube:/data
mariadb:
build:
context: ./docker/mariadb/
container_name: kolab-mariadb
restart: on-failure
environment:
- MYSQL_ROOT_PASSWORD=${DB_ROOT_PASSWORD}
- TZ="+02:00"
- DB_HKCCP_DATABASE=${DB_DATABASE}
- DB_HKCCP_USERNAME=${DB_USERNAME}
- DB_HKCCP_PASSWORD=${DB_PASSWORD}
- DB_KOLAB_DATABASE=kolab
- DB_KOLAB_USERNAME=kolab
- DB_KOLAB_PASSWORD=${DB_PASSWORD:?"DB_PASSWORD is missing"}
- DB_RC_DATABASE=roundcube
- DB_RC_USERNAME=roundcube
- DB_RC_PASSWORD=${DB_PASSWORD:?"DB_PASSWORD is missing"}
healthcheck:
interval: 10s
test: "test -e /var/run/mysqld/mysqld.sock && test -e /tmp/initialized"
timeout: 5s
retries: 30
image: mariadb
networks:
kolab:
ipv4_address: 172.18.0.3
volumes:
- mariadb:/var/lib/mysql
pdns:
build:
context: ./docker/pdns/
container_name: kolab-pdns
restart: on-failure
tty: true
hostname: pdns
depends_on:
mariadb:
condition: service_healthy
healthcheck:
interval: 10s
test: "pdns_control rping || exit 1"
timeout: 5s
retries: 30
image: kolab-pdns
environment:
- ROLE=both
- DB_HOST=mariadb
- DB_DATABASE=${DB_DATABASE:?DB_DATABASE}
- DB_USERNAME=${DB_USERNAME:?DB_USERNAME}
- DB_PASSWORD=${DB_PASSWORD:?DB_PASSWORD}
networks:
kolab:
ipv4_address: 172.18.0.11
tmpfs:
- /run
- /tmp
- /var/run
- /var/tmp
volumes:
- /sys/fs/cgroup:/sys/fs/cgroup:ro
redis:
build:
context: ./docker/redis/
healthcheck:
interval: 10s
test: "redis-cli ping || exit 1"
timeout: 5s
retries: 30
container_name: kolab-redis
restart: on-failure
hostname: redis
image: redis
networks:
- kolab
volumes:
- ./docker/redis/redis.conf:/usr/local/etc/redis/redis.conf:ro
webapp:
build:
context: ./docker/webapp/
args:
GIT_REF: ${KOLAB_GIT_REF}
GIT_REMOTE: ${KOLAB_GIT_REMOTE}
container_name: kolab-webapp
restart: on-failure
image: kolab-webapp
healthcheck:
interval: 10s
test: "./artisan octane:status || exit 1"
timeout: 5s
retries: 30
start_period: 5m
depends_on:
redis:
condition: service_healthy
networks:
kolab:
ipv4_address: 172.18.0.4
volumes:
- ./src:/src/kolabsrc.orig:ro
ports:
- "8000:8000"
meet:
build:
context: ./docker/meet/
args:
GIT_REF: ${KOLAB_GIT_REF}
GIT_REMOTE: ${KOLAB_GIT_REMOTE}
container_name: kolab-meet
restart: on-failure
healthcheck:
interval: 10s
test: "curl --insecure -H 'X-AUTH-TOKEN: ${MEET_SERVER_TOKEN}' --fail https://${MEET_LISTENING_HOST}:12443/meetmedia/api/health || exit 1"
timeout: 5s
retries: 30
start_period: 5m
environment:
- WEBRTC_LISTEN_IP=${MEET_WEBRTC_LISTEN_IP:?err}
- PUBLIC_DOMAIN=${MEET_PUBLIC_DOMAIN:?err}
- LISTENING_HOST=${MEET_LISTENING_HOST:?err}
- LISTENING_PORT=12443
- TURN_SERVER=${MEET_TURN_SERVER}
- TURN_STATIC_SECRET=${COTURN_STATIC_SECRET}
- AUTH_TOKEN=${MEET_SERVER_TOKEN:?err}
- WEBHOOK_TOKEN=${MEET_WEBHOOK_TOKEN:?err}
- WEBHOOK_URL=${APP_PUBLIC_URL:?err}/api/webhooks/meet
- SSL_CERT=/etc/pki/tls/certs/meet.${APP_WEBSITE_DOMAIN:?err}.cert
- SSL_KEY=/etc/pki/tls/private/meet.${APP_WEBSITE_DOMAIN:?err}.key
network_mode: host
image: kolab-meet
volumes:
- ./meet/server:/src/meet/:ro
- ./docker/certs/meet.${APP_WEBSITE_DOMAIN}.cert:/etc/pki/tls/certs/meet.${APP_WEBSITE_DOMAIN}.cert
- ./docker/certs/meet.${APP_WEBSITE_DOMAIN}.key:/etc/pki/tls/private/meet.${APP_WEBSITE_DOMAIN}.key
minio:
container_name: kolab-minio
restart: on-failure
healthcheck:
interval: 10s
test: "mc ready local || exit 1"
timeout: 5s
retries: 30
start_period: 5m
environment:
- MINIO_ROOT_USER=${MINIO_USER}
- MINIO_ROOT_PASSWORD=${MINIO_PASSWORD}
image: minio/minio
networks:
kolab:
ipv4_address: 172.18.0.14
ports:
- "9000:9000"
- "9001:9001"
entrypoint: sh
command: -c 'mkdir -p /data/${MINIO_BUCKET} && minio server /data --console-address ":9001"'
volumes:
- minio:/data
networks:
kolab:
driver: bridge
ipam:
config:
- subnet: "172.18.0.0/24"
volumes:
mariadb:
minio:
roundcube:

File Metadata

Mime Type
text/plain
Expires
Mon, Apr 6, 12:29 AM (1 w, 5 h ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
18720027
Default Alt Text
docker-compose.yml (6 KB)

Event Timeline