mirror of
https://github.com/zokradonh/kopano-docker
synced 2025-07-23 01:45:37 +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
|
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
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"
|
- "${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
|
||||||
|
@ -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:
|
||||||
|
25
setup.sh
25
setup.sh
@ -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
|
||||||
|
Loading…
x
Reference in New Issue
Block a user