mirror of
https://github.com/zokradonh/kopano-docker
synced 2025-07-22 17:35: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:
parent
70e9940b38
commit
3367b539b7
2
Makefile
2
Makefile
@ -30,7 +30,7 @@ KOPANO_ZPUSH_REPOSITORY_URL := http://repo.z-hub.io/z-push:/final/Debian_9.0/
|
||||
RELEASE_KEY_DOWNLOAD := 0
|
||||
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
|
||||
-include .env
|
||||
export
|
||||
|
30
docker-compose.db.yml
Normal file
30
docker-compose.db.yml
Normal 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
44
docker-compose.ldap.yml
Normal 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
67
docker-compose.mail.yml
Normal 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:
|
@ -7,16 +7,6 @@ services:
|
||||
- "${HTTP:-80}:80"
|
||||
- "${HTTPS:-443}:443"
|
||||
|
||||
ldap:
|
||||
ports:
|
||||
- ${LDAPPORT:-389}:389
|
||||
|
||||
mail:
|
||||
ports:
|
||||
- "${SMTPPORT:-25}:25"
|
||||
- "${SMTPSPORT:-465}:465"
|
||||
- "${MSAPORT:-587}:587"
|
||||
|
||||
kopano_server:
|
||||
ports:
|
||||
- ${KOPANOPORT:-236}:236
|
||||
|
@ -26,102 +26,6 @@ services:
|
||||
aliases:
|
||||
- ${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:
|
||||
image: ${docker_repo:-zokradonh}/kopano_ssl:${SSL_VERSION:-latest}
|
||||
read_only: true
|
||||
@ -153,10 +57,8 @@ services:
|
||||
hostname: kopano_server
|
||||
container_name: ${COMPOSE_PROJECT_NAME}_server
|
||||
depends_on:
|
||||
- db
|
||||
- kopano_konnect
|
||||
- kopano_ssl
|
||||
- ldap
|
||||
environment:
|
||||
- ADDITIONAL_KOPANO_PACKAGES=${ADDITIONAL_KOPANO_PACKAGES}
|
||||
- KCCOMMENT_LDAP_1=${KCCOMMENT_LDAP_1}
|
||||
@ -188,7 +90,6 @@ services:
|
||||
- kopano_server.env
|
||||
networks:
|
||||
- kopano-net
|
||||
- ldap-net
|
||||
- web-net
|
||||
volumes:
|
||||
- /etc/machine-id:/etc/machine-id
|
||||
@ -367,7 +268,6 @@ services:
|
||||
domainname: ${LDAP_DOMAIN}
|
||||
depends_on:
|
||||
- kopano_server
|
||||
- mail
|
||||
volumes:
|
||||
- /etc/machine-id:/etc/machine-id
|
||||
- /var/lib/dbus/machine-id:/var/lib/dbus/machine-id
|
||||
@ -562,7 +462,6 @@ services:
|
||||
container_name: ${COMPOSE_PROJECT_NAME}_scheduler
|
||||
networks:
|
||||
- kopano-net
|
||||
- ldap-net
|
||||
- web-net
|
||||
depends_on:
|
||||
- kopano_server
|
||||
@ -588,18 +487,10 @@ volumes:
|
||||
kopanosocket:
|
||||
kopanossl:
|
||||
kopanowebapp:
|
||||
ldap:
|
||||
maildata:
|
||||
mailstate:
|
||||
mtaconfig:
|
||||
mysql:
|
||||
slapd:
|
||||
web:
|
||||
zpushstates:
|
||||
|
||||
networks:
|
||||
kopano-net:
|
||||
driver: bridge
|
||||
ldap-net:
|
||||
driver: bridge
|
||||
web-net:
|
||||
|
25
setup.sh
25
setup.sh
@ -326,7 +326,7 @@ INSECURE=$INSECURE
|
||||
# Docker Repository to push to/pull from
|
||||
docker_repo=zokradonh
|
||||
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
|
||||
#KOPANO_CORE_REPOSITORY_URL=https://serial:REPLACE-ME@download.kopano.io/supported/core:/final/Debian_9.0/
|
||||
@ -347,10 +347,31 @@ EOF
|
||||
else
|
||||
|
||||
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
|
||||
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 "If you want to change the configuration, please edit .env directly"
|
||||
exit 1
|
||||
|
Loading…
x
Reference in New Issue
Block a user