1
0
mirror of https://github.com/zokradonh/kopano-docker synced 2025-07-23 18:05:31 +00:00

move external components to their own files (#319)

* move ldap to its own file
* add separate files for db and mail as well
* add new compose file to the default compose_file variable
* enhance setup.sh to add these new compose files if they are currently missing
This commit is contained in:
Felix Bartels 2020-01-15 13:26:30 +01:00 committed by GitHub
parent 70e9940b38
commit 3367b539b7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 165 additions and 122 deletions

View File

@ -30,7 +30,7 @@ KOPANO_ZPUSH_REPOSITORY_URL := http://repo.z-hub.io/z-push:/final/Debian_9.0/
RELEASE_KEY_DOWNLOAD := 0 RELEASE_KEY_DOWNLOAD := 0
DOWNLOAD_COMMUNITY_PACKAGES := 1 DOWNLOAD_COMMUNITY_PACKAGES := 1
DOCKERCOMPOSE_FILE := docker-compose.yml DOCKERCOMPOSE_FILE := docker-compose.yml -f docker-compose.db.yml -f docker-compose.ldap.yml -f docker-compose.mail.yml
TAG_FILE := build.tags TAG_FILE := build.tags
-include .env -include .env
export export

30
docker-compose.db.yml Normal file
View File

@ -0,0 +1,30 @@
version: "3.5"
services:
db:
image: mariadb:10.3.10-bionic
restart: unless-stopped
container_name: ${COMPOSE_PROJECT_NAME}_db
volumes:
- mysql/:/var/lib/mysql
environment:
- MYSQL_DATABASE=${MYSQL_DATABASE}
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
- MYSQL_USER=${MYSQL_USER}
env_file:
- db.env
healthcheck:
test: ["CMD-SHELL", 'mysql --database=$$MYSQL_DATABASE --password=$$MYSQL_ROOT_PASSWORD --execute="SELECT count(table_name) > 0 FROM information_schema.tables;" --skip-column-names -B']
interval: 30s
timeout: 10s
retries: 4
networks:
- kopano-net
kopano_server:
depends_on:
- db
volumes:
mysql:

44
docker-compose.ldap.yml Normal file
View File

@ -0,0 +1,44 @@
version: "3.5"
services:
ldap:
image: ${docker_repo:-zokradonh}/${LDAP_CONTAINER:-kopano_ldap_demo}:${LDAP_VERSION:-latest}
restart: unless-stopped
container_name: ${COMPOSE_PROJECT_NAME}_ldap
ports:
- ${LDAPPORT:-389}:389
environment:
- LDAP_ADMIN_PASSWORD=${LDAP_ADMIN_PASSWORD}
- LDAP_BASE_DN=${LDAP_BASE_DN}
- LDAP_DOMAIN=${LDAP_DOMAIN}
- LDAP_ORGANISATION=${LDAP_ORGANISATION}
- LDAP_READONLY_USER_PASSWORD=${LDAP_READONLY_USER_PASSWORD}
- LDAP_READONLY_USER=true
env_file:
- ldap.env
command: "--loglevel info --copy-service"
volumes:
- ldap:/var/lib/ldap
- slapd:/etc/ldap/slapd.d
networks:
- ldap-net
mail:
depends_on:
- ldap
networks:
- ldap-net
kopano_server:
depends_on:
- ldap
networks:
- ldap-net
volumes:
ldap:
slapd:
networks:
ldap-net:
driver: bridge

67
docker-compose.mail.yml Normal file
View File

@ -0,0 +1,67 @@
version: "3.5"
services:
mail:
image: tvial/docker-mailserver:release-v6.2.0
restart: unless-stopped
hostname: mail
domainname: ${LDAP_DOMAIN}
container_name: ${COMPOSE_PROJECT_NAME}_mail
ports:
- "${SMTPPORT:-25}:25"
- "${SMTPSPORT:-465}:465"
- "${MSAPORT:-587}:587"
volumes:
- maildata:/var/mail
- mailstate:/var/mail-state
- mtaconfig:/tmp/docker-mailserver/
environment:
- DMS_DEBUG=0
- ENABLE_CLAMAV=1
- ENABLE_FAIL2BAN=1
- ENABLE_LDAP=1
- ENABLE_POSTFIX_VIRTUAL_TRANSPORT=1
- ENABLE_POSTGREY=1
- ENABLE_SASLAUTHD=1
- ENABLE_SPAMASSASSIN=1
- LDAP_BIND_DN=${LDAP_BIND_DN}
- LDAP_BIND_PW=${LDAP_BIND_PW}
- LDAP_QUERY_FILTER_ALIAS=${LDAP_QUERY_FILTER_ALIAS}
- LDAP_QUERY_FILTER_DOMAIN=${LDAP_QUERY_FILTER_DOMAIN}
- LDAP_QUERY_FILTER_GROUP=${LDAP_QUERY_FILTER_GROUP}
- LDAP_QUERY_FILTER_USER=${LDAP_QUERY_FILTER_USER}
- LDAP_SEARCH_BASE=${LDAP_SEARCH_BASE}
- LDAP_SERVER_HOST=${LDAP_SERVER}
- ONE_DIR=1
- PERMIT_DOCKER=connected-networks
- POSTFIX_DAGENT=lmtp:kopano_dagent:2003
- POSTMASTER_ADDRESS=${POSTMASTER_ADDRESS}
- REPORT_RECIPIENT=1
- SASLAUTHD_LDAP_BIND_DN=${LDAP_BIND_DN}
- SASLAUTHD_LDAP_FILTER=${SASLAUTHD_LDAP_FILTER}
- SASLAUTHD_LDAP_PASSWORD=${LDAP_BIND_PW}
- SASLAUTHD_LDAP_SEARCH_BASE=${LDAP_SEARCH_BASE}
- SASLAUTHD_LDAP_SERVER=${LDAP_SERVER}
- SASLAUTHD_MECHANISMS=ldap
- SMTP_ONLY=1
- SSL_TYPE=self-signed
- TZ=${TZ}
env_file:
- mail.env
networks:
- kopano-net
# dns: 1.1.1.1 # using Google DNS can lead to lookup errors uncomment this option and
# set to the ip of a trusted dns service (Cloudflare is given as an example).
# See https://github.com/zokradonh/kopano-docker/issues/52 for more information.
cap_add:
- NET_ADMIN
- SYS_PTRACE
kopano_spooler:
depends_on:
- mail
volumes:
maildata:
mailstate:
mtaconfig:

View File

@ -7,16 +7,6 @@ services:
- "${HTTP:-80}:80" - "${HTTP:-80}:80"
- "${HTTPS:-443}:443" - "${HTTPS:-443}:443"
ldap:
ports:
- ${LDAPPORT:-389}:389
mail:
ports:
- "${SMTPPORT:-25}:25"
- "${SMTPSPORT:-465}:465"
- "${MSAPORT:-587}:587"
kopano_server: kopano_server:
ports: ports:
- ${KOPANOPORT:-236}:236 - ${KOPANOPORT:-236}:236

View File

@ -26,102 +26,6 @@ services:
aliases: aliases:
- ${FQDNCLEANED?err} - ${FQDNCLEANED?err}
ldap:
image: ${docker_repo:-zokradonh}/${LDAP_CONTAINER:-kopano_ldap_demo}:${LDAP_VERSION:-latest}
restart: unless-stopped
container_name: ${COMPOSE_PROJECT_NAME}_ldap
environment:
- LDAP_ADMIN_PASSWORD=${LDAP_ADMIN_PASSWORD}
- LDAP_BASE_DN=${LDAP_BASE_DN}
- LDAP_DOMAIN=${LDAP_DOMAIN}
- LDAP_ORGANISATION=${LDAP_ORGANISATION}
- LDAP_READONLY_USER_PASSWORD=${LDAP_READONLY_USER_PASSWORD}
- LDAP_READONLY_USER=true
env_file:
- ldap.env
command: "--loglevel info --copy-service"
volumes:
- ldap:/var/lib/ldap
- slapd:/etc/ldap/slapd.d
networks:
- ldap-net
mail:
image: tvial/docker-mailserver:release-v6.2.0
restart: unless-stopped
hostname: mail
domainname: ${LDAP_DOMAIN}
container_name: ${COMPOSE_PROJECT_NAME}_mail
depends_on:
- ldap
volumes:
- maildata:/var/mail
- mailstate:/var/mail-state
- mtaconfig:/tmp/docker-mailserver/
environment:
- DMS_DEBUG=0
- ENABLE_CLAMAV=1
- ENABLE_FAIL2BAN=1
- ENABLE_LDAP=1
- ENABLE_POSTFIX_VIRTUAL_TRANSPORT=1
- ENABLE_POSTGREY=1
- ENABLE_SASLAUTHD=1
- ENABLE_SPAMASSASSIN=1
- LDAP_BIND_DN=${LDAP_BIND_DN}
- LDAP_BIND_PW=${LDAP_BIND_PW}
- LDAP_QUERY_FILTER_ALIAS=${LDAP_QUERY_FILTER_ALIAS}
- LDAP_QUERY_FILTER_DOMAIN=${LDAP_QUERY_FILTER_DOMAIN}
- LDAP_QUERY_FILTER_GROUP=${LDAP_QUERY_FILTER_GROUP}
- LDAP_QUERY_FILTER_USER=${LDAP_QUERY_FILTER_USER}
- LDAP_SEARCH_BASE=${LDAP_SEARCH_BASE}
- LDAP_SERVER_HOST=${LDAP_SERVER}
- ONE_DIR=1
- PERMIT_DOCKER=connected-networks
- POSTFIX_DAGENT=lmtp:kopano_dagent:2003
- POSTMASTER_ADDRESS=${POSTMASTER_ADDRESS}
- REPORT_RECIPIENT=1
- SASLAUTHD_LDAP_BIND_DN=${LDAP_BIND_DN}
- SASLAUTHD_LDAP_FILTER=${SASLAUTHD_LDAP_FILTER}
- SASLAUTHD_LDAP_PASSWORD=${LDAP_BIND_PW}
- SASLAUTHD_LDAP_SEARCH_BASE=${LDAP_SEARCH_BASE}
- SASLAUTHD_LDAP_SERVER=${LDAP_SERVER}
- SASLAUTHD_MECHANISMS=ldap
- SMTP_ONLY=1
- SSL_TYPE=self-signed
- TZ=${TZ}
env_file:
- mail.env
networks:
- kopano-net
- ldap-net
# dns: 1.1.1.1 # using Google DNS can lead to lookup errors uncomment this option and
# set to the ip of a trusted dns service (Cloudflare is given as an example).
# See https://github.com/zokradonh/kopano-docker/issues/52 for more information.
cap_add:
- NET_ADMIN
- SYS_PTRACE
db:
image: mariadb:10.3.10-bionic
restart: unless-stopped
container_name: ${COMPOSE_PROJECT_NAME}_db
volumes:
- mysql/:/var/lib/mysql
environment:
- MYSQL_DATABASE=${MYSQL_DATABASE}
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
- MYSQL_USER=${MYSQL_USER}
env_file:
- db.env
healthcheck:
test: ["CMD-SHELL", 'mysql --database=$$MYSQL_DATABASE --password=$$MYSQL_ROOT_PASSWORD --execute="SELECT count(table_name) > 0 FROM information_schema.tables;" --skip-column-names -B']
interval: 30s
timeout: 10s
retries: 4
networks:
- kopano-net
kopano_ssl: kopano_ssl:
image: ${docker_repo:-zokradonh}/kopano_ssl:${SSL_VERSION:-latest} image: ${docker_repo:-zokradonh}/kopano_ssl:${SSL_VERSION:-latest}
read_only: true read_only: true
@ -153,10 +57,8 @@ services:
hostname: kopano_server hostname: kopano_server
container_name: ${COMPOSE_PROJECT_NAME}_server container_name: ${COMPOSE_PROJECT_NAME}_server
depends_on: depends_on:
- db
- kopano_konnect - kopano_konnect
- kopano_ssl - kopano_ssl
- ldap
environment: environment:
- ADDITIONAL_KOPANO_PACKAGES=${ADDITIONAL_KOPANO_PACKAGES} - ADDITIONAL_KOPANO_PACKAGES=${ADDITIONAL_KOPANO_PACKAGES}
- KCCOMMENT_LDAP_1=${KCCOMMENT_LDAP_1} - KCCOMMENT_LDAP_1=${KCCOMMENT_LDAP_1}
@ -188,7 +90,6 @@ services:
- kopano_server.env - kopano_server.env
networks: networks:
- kopano-net - kopano-net
- ldap-net
- web-net - web-net
volumes: volumes:
- /etc/machine-id:/etc/machine-id - /etc/machine-id:/etc/machine-id
@ -367,7 +268,6 @@ services:
domainname: ${LDAP_DOMAIN} domainname: ${LDAP_DOMAIN}
depends_on: depends_on:
- kopano_server - kopano_server
- mail
volumes: volumes:
- /etc/machine-id:/etc/machine-id - /etc/machine-id:/etc/machine-id
- /var/lib/dbus/machine-id:/var/lib/dbus/machine-id - /var/lib/dbus/machine-id:/var/lib/dbus/machine-id
@ -562,7 +462,6 @@ services:
container_name: ${COMPOSE_PROJECT_NAME}_scheduler container_name: ${COMPOSE_PROJECT_NAME}_scheduler
networks: networks:
- kopano-net - kopano-net
- ldap-net
- web-net - web-net
depends_on: depends_on:
- kopano_server - kopano_server
@ -588,18 +487,10 @@ volumes:
kopanosocket: kopanosocket:
kopanossl: kopanossl:
kopanowebapp: kopanowebapp:
ldap:
maildata:
mailstate:
mtaconfig:
mysql:
slapd:
web: web:
zpushstates: zpushstates:
networks: networks:
kopano-net: kopano-net:
driver: bridge driver: bridge
ldap-net:
driver: bridge
web-net: web-net:

View File

@ -326,7 +326,7 @@ INSECURE=$INSECURE
# Docker Repository to push to/pull from # Docker Repository to push to/pull from
docker_repo=zokradonh docker_repo=zokradonh
COMPOSE_PROJECT_NAME=kopano COMPOSE_PROJECT_NAME=kopano
COMPOSE_FILE=docker-compose.yml:docker-compose.ports.yml COMPOSE_FILE=docker-compose.yml:docker-compose.ports.yml:docker-compose.db.yml:docker-compose.ldap.yml:docker-compose.mail.yml
# Modify below to build a different version, than the kopano nightly release # Modify below to build a different version, than the kopano nightly release
#KOPANO_CORE_REPOSITORY_URL=https://serial:REPLACE-ME@download.kopano.io/supported/core:/final/Debian_9.0/ #KOPANO_CORE_REPOSITORY_URL=https://serial:REPLACE-ME@download.kopano.io/supported/core:/final/Debian_9.0/
@ -347,10 +347,31 @@ EOF
else else
if ! grep -q COMPOSE_FILE ./.env; then if ! grep -q COMPOSE_FILE ./.env; then
echo "Adding COMPOSE_FILE setting to .env" echo "Adding COMPOSE_FILE setting to .env (for docker-compose.ports.yml)"
echo "COMPOSE_FILE=docker-compose.yml:docker-compose.ports.yml" >> ./.env echo "COMPOSE_FILE=docker-compose.yml:docker-compose.ports.yml" >> ./.env
fi fi
if ! grep -q docker-compose.db.yml ./.env; then
echo "Adding docker-compose.db.yml to COMPOSE_FILE variable in .env"
cfvalue="$(grep COMPOSE_FILE ./.env)"
sed -i "/^COMPOSE_FILE=/d" ./.env
echo "$cfvalue:docker-compose.db.yml" >> ./.env
fi
if ! grep -q docker-compose.ldap.yml ./.env; then
echo "Adding docker-compose.ldap.yml to COMPOSE_FILE variable in .env"
cfvalue="$(grep COMPOSE_FILE ./.env)"
sed -i "/^COMPOSE_FILE=/d" ./.env
echo "$cfvalue:docker-compose.ldap.yml" >> ./.env
fi
if ! grep -q docker-compose.mail.yml ./.env; then
echo "Adding docker-compose.mail.yml to COMPOSE_FILE variable in .env"
cfvalue="$(grep COMPOSE_FILE ./.env)"
sed -i "/^COMPOSE_FILE=/d" ./.env
echo "$cfvalue:docker-compose.mail.yml" >> ./.env
fi
echo ".env already exists with initial configuration" echo ".env already exists with initial configuration"
echo "If you want to change the configuration, please edit .env directly" echo "If you want to change the configuration, please edit .env directly"
exit 1 exit 1