Changeset View
Changeset View
Standalone View
Standalone View
docker-compose.yml
Show All 20 Lines | |||||
kolab: | kolab: | ||||
build: | build: | ||||
context: ./docker/kolab/ | context: ./docker/kolab/ | ||||
container_name: kolab | container_name: kolab | ||||
privileged: true | privileged: true | ||||
depends_on: | depends_on: | ||||
mariadb: | mariadb: | ||||
condition: service_healthy | condition: service_healthy | ||||
pdns: | |||||
condition: service_healthy | |||||
extra_hosts: | extra_hosts: | ||||
- "kolab.mgmt.com:127.0.0.1" | - "kolab.mgmt.com:127.0.0.1" | ||||
environment: | environment: | ||||
- DB_HOST=${DB_HOST} | - LDAP_HOST=127.0.0.1 | ||||
- LDAP_ADMIN_BIND_DN="cn=Directory Manager" | |||||
- LDAP_ADMIN_BIND_PW=Welcome2KolabSystems | |||||
- DB_HOST=mariadb | |||||
- DB_ROOT_PASSWORD=Welcome2KolabSystems | - DB_ROOT_PASSWORD=Welcome2KolabSystems | ||||
- DB_HKCCP_DATABASE=${DB_DATABASE} | - DB_HKCCP_DATABASE=${DB_DATABASE} | ||||
- DB_HKCCP_USERNAME=${DB_USERNAME} | - DB_HKCCP_USERNAME=${DB_USERNAME} | ||||
- DB_HKCCP_PASSWORD=${DB_PASSWORD} | - DB_HKCCP_PASSWORD=${DB_PASSWORD} | ||||
- DB_KOLAB_DATABASE=kolab | - DB_KOLAB_DATABASE=kolab | ||||
- DB_KOLAB_USERNAME=kolab | - DB_KOLAB_USERNAME=kolab | ||||
- DB_KOLAB_PASSWORD=Welcome2KolabSystems | - DB_KOLAB_PASSWORD=Welcome2KolabSystems | ||||
- DB_RC_USERNAME=roundcube | - DB_RC_USERNAME=roundcube | ||||
- DB_RC_PASSWORD=Welcome2KolabSystems | - DB_RC_PASSWORD=Welcome2KolabSystems | ||||
- SSL_CERTIFICATE=${KOLAB_SSL_CERTIFICATE:?err} | - SSL_CERTIFICATE=${KOLAB_SSL_CERTIFICATE:?err} | ||||
- SSL_CERTIFICATE_FULLCHAIN=${KOLAB_SSL_CERTIFICATE_FULLCHAIN:?err} | - SSL_CERTIFICATE_FULLCHAIN=${KOLAB_SSL_CERTIFICATE_FULLCHAIN:?err} | ||||
- SSL_CERTIFICATE_KEY=${KOLAB_SSL_CERTIFICATE_KEY:?err} | - SSL_CERTIFICATE_KEY=${KOLAB_SSL_CERTIFICATE_KEY:?err} | ||||
- IMAP_HOST=127.0.0.1 | - IMAP_HOST=127.0.0.1 | ||||
- IMAP_PORT=11993 | - IMAP_PORT=11993 | ||||
- MAIL_HOST=127.0.0.1 | - MAIL_HOST=127.0.0.1 | ||||
- MAIL_PORT=10587 | - MAIL_PORT=10587 | ||||
healthcheck: | healthcheck: | ||||
interval: 10s | interval: 10s | ||||
test: test -f /tmp/kolab-init.done | test: "systemctl is-active kolab-init || exit 1" | ||||
timeout: 5s | timeout: 5s | ||||
retries: 30 | retries: 30 | ||||
start_period: 5m | |||||
# 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 | |||||
hostname: kolab.mgmt.com | hostname: kolab.mgmt.com | ||||
image: kolab | image: kolab | ||||
network_mode: host | networks: | ||||
kolab: | |||||
ipv4_address: 172.18.0.5 | |||||
ports: | |||||
- "12143:12143" | |||||
tmpfs: | tmpfs: | ||||
- /run | - /run | ||||
- /tmp | - /tmp | ||||
- /var/run | - /var/run | ||||
- /var/tmp | - /var/tmp | ||||
tty: true | tty: true | ||||
volumes: | volumes: | ||||
- ./ext/:/src/:ro | - ./ext/:/src/:ro | ||||
- /etc/letsencrypt/:/etc/letsencrypt/:ro | - /etc/letsencrypt/:/etc/letsencrypt/:ro | ||||
- ./docker/certs/ca.cert:/etc/pki/tls/certs/ca.cert:ro | - ./docker/certs/ca.cert:/etc/pki/tls/certs/ca.cert:ro | ||||
- ./docker/certs/ca.cert:/etc/pki/ca-trust/source/anchors/ca.cert:ro | - ./docker/certs/ca.cert:/etc/pki/ca-trust/source/anchors/ca.cert:ro | ||||
- ./docker/certs/kolab.hosted.com.cert:/etc/pki/tls/certs/kolab.hosted.com.cert | - ./docker/certs/kolab.hosted.com.cert:${KOLAB_SSL_CERTIFICATE:?err} | ||||
- ./docker/certs/kolab.hosted.com.chain.pem:/etc/pki/tls/certs/kolab.hosted.com.chain.pem | - ./docker/certs/kolab.hosted.com.chain.pem:${KOLAB_SSL_CERTIFICATE_FULLCHAIN:?err} | ||||
- ./docker/certs/kolab.hosted.com.key:/etc/pki/tls/certs/kolab.hosted.com.key | - ./docker/certs/kolab.hosted.com.key:${KOLAB_SSL_CERTIFICATE_KEY:?err} | ||||
- ./docker/kolab/utils:/root/utils:ro | - ./docker/kolab/utils:/root/utils:ro | ||||
- /sys/fs/cgroup:/sys/fs/cgroup:ro | - /sys/fs/cgroup:/sys/fs/cgroup:ro | ||||
- imap:/imapdata | |||||
- ldap:/ldapdata | |||||
mariadb: | mariadb: | ||||
container_name: kolab-mariadb | container_name: kolab-mariadb | ||||
environment: | environment: | ||||
MYSQL_ROOT_PASSWORD: Welcome2KolabSystems | - MARIADB_ROOT_PASSWORD=Welcome2KolabSystems | ||||
TZ: "+02:00" | - TZ="+02:00" | ||||
- DB_HKCCP_DATABASE=${DB_DATABASE} | |||||
- DB_HKCCP_USERNAME=${DB_USERNAME} | |||||
- DB_HKCCP_PASSWORD=${DB_PASSWORD} | |||||
healthcheck: | healthcheck: | ||||
interval: 10s | interval: 10s | ||||
test: test -e /var/run/mysqld/mysqld.sock | test: test -e /var/run/mysqld/mysqld.sock | ||||
timeout: 5s | timeout: 5s | ||||
retries: 30 | retries: 30 | ||||
image: mariadb | image: mariadb:latest | ||||
network_mode: host | networks: | ||||
- kolab | |||||
volumes: | |||||
- ./docker/mariadb/mysql-init/:/docker-entrypoint-initdb.d/ | |||||
- mariadb:/var/lib/mysql | |||||
haproxy: | haproxy: | ||||
depends_on: | |||||
proxy: | |||||
condition: service_healthy | |||||
build: | build: | ||||
context: ./docker/haproxy/ | context: ./docker/haproxy/ | ||||
healthcheck: | healthcheck: | ||||
interval: 10s | interval: 10s | ||||
test: "kill -0 $$(cat /var/run/haproxy.pid)" | test: "kill -0 $$(cat /var/run/haproxy.pid)" | ||||
timeout: 5s | timeout: 5s | ||||
retries: 30 | retries: 30 | ||||
container_name: kolab-haproxy | container_name: kolab-haproxy | ||||
hostname: haproxy.hosted.com | hostname: haproxy.hosted.com | ||||
image: kolab-haproxy | image: kolab-haproxy | ||||
network_mode: host | networks: | ||||
- kolab | |||||
tmpfs: | tmpfs: | ||||
- /run | - /run | ||||
- /tmp | - /tmp | ||||
- /var/run | - /var/run | ||||
- /var/tmp | - /var/tmp | ||||
tty: true | tty: true | ||||
volumes: | volumes: | ||||
- ./docker/certs/:/etc/certs/:ro | - ./docker/certs/:/etc/certs/:ro | ||||
- /etc/letsencrypt/:/etc/letsencrypt/:ro | - /etc/letsencrypt/:/etc/letsencrypt/:ro | ||||
pdns: | pdns: | ||||
build: | build: | ||||
context: ./docker/pdns/ | context: ./docker/pdns/ | ||||
container_name: kolab-pdns | container_name: kolab-pdns | ||||
hostname: pdns | |||||
depends_on: | depends_on: | ||||
mariadb: | mariadb: | ||||
condition: service_healthy | condition: service_healthy | ||||
healthcheck: | healthcheck: | ||||
interval: 10s | interval: 10s | ||||
test: "systemctl status pdns || exit 1" | test: "systemctl status pdns || exit 1" | ||||
timeout: 5s | timeout: 5s | ||||
retries: 30 | retries: 30 | ||||
hostname: pdns | image: kolab-pdns | ||||
image: apheleia/kolab-pdns | networks: | ||||
network_mode: host | kolab: | ||||
ipv4_address: 172.18.0.11 | |||||
tmpfs: | tmpfs: | ||||
- /run | - /run | ||||
- /tmp | - /tmp | ||||
- /var/run | - /var/run | ||||
- /var/tmp | - /var/tmp | ||||
tty: true | tty: true | ||||
volumes: | volumes: | ||||
- /sys/fs/cgroup:/sys/fs/cgroup:ro | - /sys/fs/cgroup:/sys/fs/cgroup:ro | ||||
proxy: | proxy: | ||||
depends_on: | |||||
kolab: | |||||
condition: service_healthy | |||||
webapp: | |||||
condition: service_healthy | |||||
build: | build: | ||||
context: ./docker/proxy/ | context: ./docker/proxy/ | ||||
args: | args: | ||||
APP_WEBSITE_DOMAIN: ${APP_WEBSITE_DOMAIN:?err} | APP_WEBSITE_DOMAIN: ${APP_WEBSITE_DOMAIN:?err} | ||||
SSL_CERTIFICATE: ${PROXY_SSL_CERTIFICATE:?err} | SSL_CERTIFICATE: ${PROXY_SSL_CERTIFICATE:?err} | ||||
SSL_CERTIFICATE_KEY: ${PROXY_SSL_CERTIFICATE_KEY:?err} | SSL_CERTIFICATE_KEY: ${PROXY_SSL_CERTIFICATE_KEY:?err} | ||||
healthcheck: | healthcheck: | ||||
interval: 10s | interval: 10s | ||||
test: "kill -0 $$(cat /run/nginx.pid)" | test: "kill -0 $$(cat /run/nginx.pid)" | ||||
timeout: 5s | timeout: 5s | ||||
retries: 30 | retries: 30 | ||||
container_name: kolab-proxy | container_name: kolab-proxy | ||||
hostname: ${APP_WEBSITE_DOMAIN:?err} | hostname: proxy | ||||
image: kolab-proxy | image: kolab-proxy | ||||
network_mode: host | extra_hosts: | ||||
- "meet:${MEET_LISTENING_HOST}" | |||||
networks: | |||||
kolab: | |||||
ipv4_address: 172.18.0.7 | |||||
tmpfs: | tmpfs: | ||||
- /run | - /run | ||||
- /tmp | - /tmp | ||||
- /var/run | - /var/run | ||||
- /var/tmp | - /var/tmp | ||||
tty: true | tty: true | ||||
volumes: | volumes: | ||||
- ./docker/certs/:/etc/certs/:ro | - ./docker/certs/:/etc/certs/:ro | ||||
- /etc/letsencrypt/:/etc/letsencrypt/:ro | - /etc/letsencrypt/:/etc/letsencrypt/:ro | ||||
ports: | |||||
# - "80:80" | |||||
- "443:443" | |||||
- "465:465" | |||||
- "587:587" | |||||
- "143:143" | |||||
- "993:993" | |||||
redis: | redis: | ||||
build: | build: | ||||
context: ./docker/redis/ | context: ./docker/redis/ | ||||
healthcheck: | healthcheck: | ||||
interval: 10s | interval: 10s | ||||
test: "redis-cli ping || exit 1" | test: "redis-cli ping || exit 1" | ||||
timeout: 5s | timeout: 5s | ||||
retries: 30 | retries: 30 | ||||
container_name: kolab-redis | container_name: kolab-redis | ||||
hostname: redis | hostname: redis | ||||
image: redis | image: redis | ||||
network_mode: host | networks: | ||||
- kolab | |||||
volumes: | volumes: | ||||
- ./docker/redis/redis.conf:/usr/local/etc/redis/redis.conf:ro | - ./docker/redis/redis.conf:/usr/local/etc/redis/redis.conf:ro | ||||
swoole: | # ports: | ||||
build: | # - "6379:6379" | ||||
context: ./docker/swoole/ | |||||
container_name: kolab-swoole | |||||
image: apheleia/swoole:4.8.x | |||||
webapp: | webapp: | ||||
build: | build: | ||||
context: ./docker/webapp/ | context: ./docker/webapp/ | ||||
container_name: kolab-webapp | container_name: kolab-webapp | ||||
image: kolab-webapp | image: kolab-webapp | ||||
healthcheck: | healthcheck: | ||||
interval: 10s | interval: 10s | ||||
test: "/src/kolabsrc/artisan octane:status || exit 1" | test: "/src/kolabsrc/artisan octane:status || exit 1" | ||||
timeout: 5s | timeout: 5s | ||||
retries: 30 | retries: 30 | ||||
start_period: 5m | |||||
depends_on: | depends_on: | ||||
kolab: | kolab: | ||||
condition: service_healthy | condition: service_healthy | ||||
network_mode: host | redis: | ||||
volumes: | |||||
- ./src:/src/kolabsrc.orig:ro | |||||
tests: | |||||
build: | |||||
context: ./docker/tests/ | |||||
container_name: kolab-tests | |||||
image: kolab-tests | |||||
depends_on: | |||||
kolab: | |||||
condition: service_healthy | condition: service_healthy | ||||
network_mode: host | networks: | ||||
- kolab | |||||
volumes: | volumes: | ||||
- ./src:/src/kolabsrc.orig:ro | - ./src:/src/kolabsrc.orig:ro | ||||
ports: | |||||
- "8000:8000" | |||||
meet: | meet: | ||||
build: | build: | ||||
context: ./docker/meet/ | context: ./docker/meet/ | ||||
healthcheck: | healthcheck: | ||||
interval: 10s | interval: 10s | ||||
test: "curl --insecure -H 'X-AUTH-TOKEN: ${MEET_SERVER_TOKEN}' --fail https://localhost:12443/meetmedia/api/health || exit 1" | test: "curl --insecure -H 'X-AUTH-TOKEN: ${MEET_SERVER_TOKEN}' --fail https://${MEET_LISTENING_HOST}:12443/meetmedia/api/health || exit 1" | ||||
timeout: 5s | timeout: 5s | ||||
retries: 30 | retries: 30 | ||||
start_period: 5m | |||||
environment: | environment: | ||||
- WEBRTC_LISTEN_IP=${MEET_WEBRTC_LISTEN_IP:?err} | - WEBRTC_LISTEN_IP=${MEET_WEBRTC_LISTEN_IP:?err} | ||||
- PUBLIC_DOMAIN=${MEET_PUBLIC_DOMAIN:?err} | - PUBLIC_DOMAIN=${MEET_PUBLIC_DOMAIN:?err} | ||||
- LISTENING_HOST=0.0.0.0 | - LISTENING_HOST=${MEET_LISTENING_HOST:?err} | ||||
- LISTENING_PORT=12443 | - LISTENING_PORT=12443 | ||||
- TURN_SERVER=${MEET_TURN_SERVER} | - TURN_SERVER=${MEET_TURN_SERVER} | ||||
- TURN_STATIC_SECRET=${COTURN_STATIC_SECRET} | - TURN_STATIC_SECRET=${COTURN_STATIC_SECRET} | ||||
- AUTH_TOKEN=${MEET_SERVER_TOKEN:?err} | - AUTH_TOKEN=${MEET_SERVER_TOKEN:?err} | ||||
- WEBHOOK_TOKEN=${MEET_WEBHOOK_TOKEN:?err} | - WEBHOOK_TOKEN=${MEET_WEBHOOK_TOKEN:?err} | ||||
- WEBHOOK_URL=${APP_PUBLIC_URL:?err}/api/webhooks/meet | - WEBHOOK_URL=${APP_PUBLIC_URL:?err}/api/webhooks/meet | ||||
- SSL_CERT=/etc/pki/tls/certs/meet.${APP_WEBSITE_DOMAIN:?err}.cert | - SSL_CERT=/etc/pki/tls/certs/meet.${APP_WEBSITE_DOMAIN:?err}.cert | ||||
- SSL_KEY=/etc/pki/tls/private/meet.${APP_WEBSITE_DOMAIN:?err}.key | - SSL_KEY=/etc/pki/tls/private/meet.${APP_WEBSITE_DOMAIN:?err}.key | ||||
network_mode: host | network_mode: host | ||||
container_name: kolab-meet | container_name: kolab-meet | ||||
image: kolab-meet | image: kolab-meet | ||||
volumes: | volumes: | ||||
- ./meet/server:/src/meet/:ro | - ./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}.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 | - ./docker/certs/meet.${APP_WEBSITE_DOMAIN}.key:/etc/pki/tls/private/meet.${APP_WEBSITE_DOMAIN}.key | ||||
networks: | |||||
kolab: | |||||
driver: bridge | |||||
ipam: | |||||
config: | |||||
- subnet: "172.18.0.0/24" | |||||
volumes: | |||||
mariadb: | |||||
imap: | |||||
ldap: |