diff --git a/docker-compose.yml b/docker-compose.yml index 788e3edb..7bd893e8 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,246 +1,246 @@ 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: - - MARIADB_ROOT_PASSWORD=${DB_ROOT_PASSWORD} + - 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: diff --git a/docker/mariadb/Dockerfile b/docker/mariadb/Dockerfile index 87cda56f..21025b10 100644 --- a/docker/mariadb/Dockerfile +++ b/docker/mariadb/Dockerfile @@ -1,5 +1,5 @@ -FROM mariadb:10.9 +FROM quay.io/sclorg/mariadb-105-c9s -COPY mysql-init/setup.sh /docker-entrypoint-initdb.d/ -COPY mysql-init/roundcube.mysql.initial.sql /home/ -COPY mysql-update/update.sh /always-initdb.d/ +COPY /rootfs / + +EXPOSE 3306/tcp diff --git a/docker/mariadb/custom-entrypoint.sh b/docker/mariadb/custom-entrypoint.sh deleted file mode 100755 index 90673d74..00000000 --- a/docker/mariadb/custom-entrypoint.sh +++ /dev/null @@ -1,43 +0,0 @@ -#!/usr/bin/env bash -set -Eeo pipefail -set -x - -# Example using the functions of the MariaDB entrypoint to customize startup to always run files in /always-initdb.d/ - -rm -rf /var/lib/mysql/* -ls /var/lib/mysql - -source "$(which docker-entrypoint.sh)" - -docker_setup_env "$@" -ls /var/lib/mysql -echo "Already exists $DATABASE_ALREADY_EXISTS" -docker_create_db_directories - -if [ -z "$DATABASE_ALREADY_EXISTS" ]; then - mysql_note "DB does not already exist" - docker_verify_minimum_env - docker_init_database_dir "$@" - - mysql_note "Starting temporary server" - docker_temp_server_start "$@" - mysql_note "Temporary server started." - - docker_setup_db - docker_process_init_files /docker-entrypoint-initdb.d/* - - mysql_note "Stopping temporary server" - docker_temp_server_stop - mysql_note "Temporary server stopped" - - echo - mysql_note "MySQL init process done. Ready for start up." - echo -else - docker_temp_server_start $@ - docker_process_init_files /always-initdb.d/* - docker_temp_server_stop -fi - -# exec mysqld -su -c mysqld mysql diff --git a/docker/mariadb/mysql-init/setup.sh b/docker/mariadb/mysql-init/setup.sh deleted file mode 100755 index a8698c1c..00000000 --- a/docker/mariadb/mysql-init/setup.sh +++ /dev/null @@ -1,101 +0,0 @@ -#!/bin/bash - -MYSQL_PWD=$MARIADB_ROOT_PASSWORD mysql --protocol=socket -uroot -hlocalhost --socket="/run/mysqld/mysqld.sock" << EOF -CREATE DATABASE ${DB_HKCCP_DATABASE}; -CREATE USER '${DB_HKCCP_USERNAME}'@'%' IDENTIFIED BY '${DB_HKCCP_PASSWORD}'; -GRANT ALL PRIVILEGES ON ${DB_HKCCP_DATABASE}.* TO '${DB_HKCCP_USERNAME}'@'%' IDENTIFIED BY '${DB_HKCCP_PASSWORD}'; -FLUSH PRIVILEGES; -EOF - - -MYSQL_PWD=$MARIADB_ROOT_PASSWORD mysql --protocol=socket -uroot -hlocalhost --socket="/run/mysqld/mysqld.sock" << EOF -CREATE DATABASE ${DB_KOLAB_DATABASE}; -CREATE USER ${DB_KOLAB_USERNAME}@'%' IDENTIFIED BY '${DB_KOLAB_PASSWORD}'; -GRANT ALL PRIVILEGES ON ${DB_KOLAB_DATABASE}.* TO ${DB_KOLAB_USERNAME}@'%' IDENTIFIED BY '${DB_KOLAB_PASSWORD}'; -FLUSH PRIVILEGES; -EOF - -MYSQL_PWD=$MARIADB_ROOT_PASSWORD mysql --protocol=socket -uroot -hlocalhost --socket="/run/mysqld/mysqld.sock" << EOF -CREATE DATABASE IF NOT EXISTS $DB_RC_DATABASE CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -CREATE USER IF NOT EXISTS $DB_RC_USERNAME@'%' IDENTIFIED BY '$DB_RC_PASSWORD'; -ALTER USER $DB_RC_USERNAME@'%' IDENTIFIED BY '$DB_RC_PASSWORD'; -GRANT ALL PRIVILEGES ON $DB_RC_DATABASE.* TO $DB_RC_USERNAME@'%'; -FLUSH PRIVILEGES; -EOF - -# Required because the webapp starts first to provide authentication, -# but the seeder will fail if the roundcube tables are not available. -cat /home/roundcube.mysql.initial.sql | MYSQL_PWD=$DB_RC_PASSWORD mysql --protocol=socket -uroot -hlocalhost --socket="/run/mysqld/mysqld.sock" ${DB_RC_USERNAME} - -# Powerdns setup according to https://github.com/PowerDNS/pdns/blob/master/modules/gmysqlbackend/schema.mysql.sql -# Required for the first boot, afterwards the laravel migration will take over. -# This is only required so pdns can start cleanly, indexes etc are handled by the laravel migration. -MYSQL_PWD=$MARIADB_ROOT_PASSWORD mysql --protocol=socket -uroot -hlocalhost --socket="/run/mysqld/mysqld.sock" ${DB_HKCCP_DATABASE} << EOF -CREATE TABLE powerdns_domains ( - id INT AUTO_INCREMENT, - name VARCHAR(255) NOT NULL, - master VARCHAR(128) DEFAULT NULL, - last_check INT DEFAULT NULL, - type VARCHAR(8) NOT NULL, - notified_serial INT UNSIGNED DEFAULT NULL, - account VARCHAR(40) CHARACTER SET 'utf8' DEFAULT NULL, - options VARCHAR(64000) DEFAULT NULL, - catalog VARCHAR(255) DEFAULT NULL, - PRIMARY KEY (id) -) Engine=InnoDB CHARACTER SET 'latin1'; - -CREATE TABLE powerdns_records ( - id BIGINT AUTO_INCREMENT, - domain_id INT DEFAULT NULL, - name VARCHAR(255) DEFAULT NULL, - type VARCHAR(10) DEFAULT NULL, - content VARCHAR(64000) DEFAULT NULL, - ttl INT DEFAULT NULL, - prio INT DEFAULT NULL, - disabled TINYINT(1) DEFAULT 0, - ordername VARCHAR(255) BINARY DEFAULT NULL, - auth TINYINT(1) DEFAULT 1, - PRIMARY KEY (id) -) Engine=InnoDB CHARACTER SET 'latin1'; - -CREATE TABLE powerdns_masters ( - ip VARCHAR(64) NOT NULL, - nameserver VARCHAR(255) NOT NULL, - account VARCHAR(40) CHARACTER SET 'utf8' NOT NULL, - PRIMARY KEY (ip, nameserver) -) Engine=InnoDB CHARACTER SET 'latin1'; - -CREATE TABLE powerdns_comments ( - id INT AUTO_INCREMENT, - domain_id INT NOT NULL, - name VARCHAR(255) NOT NULL, - type VARCHAR(10) NOT NULL, - modified_at INT NOT NULL, - account VARCHAR(40) CHARACTER SET 'utf8' DEFAULT NULL, - comment TEXT CHARACTER SET 'utf8' NOT NULL, - PRIMARY KEY (id) -) Engine=InnoDB CHARACTER SET 'latin1'; - - -CREATE TABLE powerdns_cryptokeys ( - id INT AUTO_INCREMENT, - domain_id INT NOT NULL, - flags INT NOT NULL, - active BOOL, - published BOOL DEFAULT 1, - content TEXT, - PRIMARY KEY(id) -) Engine=InnoDB CHARACTER SET 'latin1'; - - -CREATE TABLE powerdns_tsigkeys ( - id INT AUTO_INCREMENT, - name VARCHAR(255), - algorithm VARCHAR(50), - secret VARCHAR(255), - PRIMARY KEY (id) -) Engine=InnoDB CHARACTER SET 'latin1'; - -EOF - -touch /tmp/initialized diff --git a/docker/mariadb/mysql-update/update.sh b/docker/mariadb/mysql-update/update.sh deleted file mode 100755 index 465de900..00000000 --- a/docker/mariadb/mysql-update/update.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash - -MYSQL_PWD=$MARIADB_ROOT_PASSWORD mysql --protocol=socket -uroot -hlocalhost --socket="/run/mysqld/mysqld.sock" << EOF -ALTER USER $DB_HKCCP_USERNAME@'%' IDENTIFIED BY '$DB_HKCCP_PASSWORD'; -FLUSH PRIVILEGES; -EOF - -MYSQL_PWD=$MARIADB_ROOT_PASSWORD mysql --protocol=socket -uroot -hlocalhost --socket="/run/mysqld/mysqld.sock" << EOF -ALTER USER $DB_KOLAB_USERNAME@'%' IDENTIFIED BY '$DB_KOLAB_PASSWORD'; -FLUSH PRIVILEGES; -EOF diff --git a/docker/mariadb/rootfs/opt/app-root/src/mysql-cfg/myconfig.cnf b/docker/mariadb/rootfs/opt/app-root/src/mysql-cfg/myconfig.cnf new file mode 100644 index 00000000..7764adf9 --- /dev/null +++ b/docker/mariadb/rootfs/opt/app-root/src/mysql-cfg/myconfig.cnf @@ -0,0 +1,3 @@ +[mysqld] +query-cache-limit=262144 + diff --git a/docker/mariadb/rootfs/opt/app-root/src/mysql-data/init.sql b/docker/mariadb/rootfs/opt/app-root/src/mysql-data/init.sql new file mode 100644 index 00000000..31599829 --- /dev/null +++ b/docker/mariadb/rootfs/opt/app-root/src/mysql-data/init.sql @@ -0,0 +1,4 @@ +CREATE TABLE products (id INTEGER, name VARCHAR(256), price FLOAT, variant INTEGER); +CREATE TABLE products_variant (id INTEGER, name VARCHAR(256)); +INSERT INTO products_variant (id, name) VALUES ('1', 'blue'), ('2', 'green'); + diff --git a/docker/mariadb/mysql-init/roundcube.mysql.initial.sql b/docker/mariadb/rootfs/opt/app-root/src/mysql-data/roundcube.mysql.initial.sql similarity index 100% rename from docker/mariadb/mysql-init/roundcube.mysql.initial.sql rename to docker/mariadb/rootfs/opt/app-root/src/mysql-data/roundcube.mysql.initial.sql diff --git a/docker/mariadb/rootfs/opt/app-root/src/mysql-init/70-init-db.sh b/docker/mariadb/rootfs/opt/app-root/src/mysql-init/70-init-db.sh new file mode 100644 index 00000000..47f4f7cb --- /dev/null +++ b/docker/mariadb/rootfs/opt/app-root/src/mysql-init/70-init-db.sh @@ -0,0 +1,106 @@ +init_arbitrary_database() { + local thisdir + local init_data_file + thisdir=$(dirname ${BASH_SOURCE[0]}) + + mysql $mysql_flags << EOF +CREATE DATABASE ${DB_HKCCP_DATABASE}; +CREATE USER '${DB_HKCCP_USERNAME}'@'%' IDENTIFIED BY '${DB_HKCCP_PASSWORD}'; +GRANT ALL PRIVILEGES ON ${DB_HKCCP_DATABASE}.* TO '${DB_HKCCP_USERNAME}'@'%' IDENTIFIED BY '${DB_HKCCP_PASSWORD}'; +FLUSH PRIVILEGES; +EOF + + mysql $mysql_flags << EOF +CREATE DATABASE ${DB_KOLAB_DATABASE}; +CREATE USER ${DB_KOLAB_USERNAME}@'%' IDENTIFIED BY '${DB_KOLAB_PASSWORD}'; +GRANT ALL PRIVILEGES ON ${DB_KOLAB_DATABASE}.* TO ${DB_KOLAB_USERNAME}@'%' IDENTIFIED BY '${DB_KOLAB_PASSWORD}'; +FLUSH PRIVILEGES; +EOF + + mysql $mysql_flags << EOF +CREATE DATABASE IF NOT EXISTS $DB_RC_DATABASE CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; +CREATE USER IF NOT EXISTS $DB_RC_USERNAME@'%' IDENTIFIED BY '$DB_RC_PASSWORD'; +ALTER USER $DB_RC_USERNAME@'%' IDENTIFIED BY '$DB_RC_PASSWORD'; +GRANT ALL PRIVILEGES ON $DB_RC_DATABASE.* TO $DB_RC_USERNAME@'%'; +FLUSH PRIVILEGES; +EOF + + # Powerdns setup according to https://github.com/PowerDNS/pdns/blob/master/modules/gmysqlbackend/schema.mysql.sql + # Required for the first boot, afterwards the laravel migration will take over. + # This is only required so pdns can start cleanly, indexes etc are handled by the laravel migration. + mysql $mysql_flags ${DB_HKCCP_DATABASE} << EOF +CREATE TABLE powerdns_domains ( +id INT AUTO_INCREMENT, +name VARCHAR(255) NOT NULL, +master VARCHAR(128) DEFAULT NULL, +last_check INT DEFAULT NULL, +type VARCHAR(8) NOT NULL, +notified_serial INT UNSIGNED DEFAULT NULL, +account VARCHAR(40) CHARACTER SET 'utf8' DEFAULT NULL, +options VARCHAR(64000) DEFAULT NULL, +catalog VARCHAR(255) DEFAULT NULL, +PRIMARY KEY (id) +) Engine=InnoDB CHARACTER SET 'latin1'; + +CREATE TABLE powerdns_records ( +id BIGINT AUTO_INCREMENT, +domain_id INT DEFAULT NULL, +name VARCHAR(255) DEFAULT NULL, +type VARCHAR(10) DEFAULT NULL, +content VARCHAR(64000) DEFAULT NULL, +ttl INT DEFAULT NULL, +prio INT DEFAULT NULL, +disabled TINYINT(1) DEFAULT 0, +ordername VARCHAR(255) BINARY DEFAULT NULL, +auth TINYINT(1) DEFAULT 1, +PRIMARY KEY (id) +) Engine=InnoDB CHARACTER SET 'latin1'; + +CREATE TABLE powerdns_masters ( +ip VARCHAR(64) NOT NULL, +nameserver VARCHAR(255) NOT NULL, +account VARCHAR(40) CHARACTER SET 'utf8' NOT NULL, +PRIMARY KEY (ip, nameserver) +) Engine=InnoDB CHARACTER SET 'latin1'; + +CREATE TABLE powerdns_comments ( +id INT AUTO_INCREMENT, +domain_id INT NOT NULL, +name VARCHAR(255) NOT NULL, +type VARCHAR(10) NOT NULL, +modified_at INT NOT NULL, +account VARCHAR(40) CHARACTER SET 'utf8' DEFAULT NULL, +comment TEXT CHARACTER SET 'utf8' NOT NULL, +PRIMARY KEY (id) +) Engine=InnoDB CHARACTER SET 'latin1'; + + +CREATE TABLE powerdns_cryptokeys ( +id INT AUTO_INCREMENT, +domain_id INT NOT NULL, +flags INT NOT NULL, +active BOOL, +published BOOL DEFAULT 1, +content TEXT, +PRIMARY KEY(id) +) Engine=InnoDB CHARACTER SET 'latin1'; + + +CREATE TABLE powerdns_tsigkeys ( +id INT AUTO_INCREMENT, +name VARCHAR(255), +algorithm VARCHAR(50), +secret VARCHAR(255), +PRIMARY KEY (id) +) Engine=InnoDB CHARACTER SET 'latin1'; + +EOF + + init_data_file=$(readlink -f ${thisdir}/../mysql-data/roundcube.mysql.initial.sql) + log_info "Initializing the arbitrary database from file ${init_data_file}..." + mysql $mysql_flags ${DB_RC_DATABASE} < ${init_data_file} +} + +if ! [ -v MYSQL_RUNNING_AS_SLAVE ] && $MYSQL_DATADIR_FIRST_INIT ; then + init_arbitrary_database +fi diff --git a/docker/mariadb/rootfs/opt/app-root/src/mysql-init/80-add-arbitrary-users.sh b/docker/mariadb/rootfs/opt/app-root/src/mysql-init/80-add-arbitrary-users.sh new file mode 100644 index 00000000..3b13b6ce --- /dev/null +++ b/docker/mariadb/rootfs/opt/app-root/src/mysql-init/80-add-arbitrary-users.sh @@ -0,0 +1,21 @@ +create_arbitrary_users() { + mysql $mysql_flags << EOF +ALTER USER $DB_HKCCP_USERNAME@'%' IDENTIFIED BY '$DB_HKCCP_PASSWORD'; +FLUSH PRIVILEGES; +EOF + + mysql $mysql_flags << EOF +ALTER USER $DB_KOLAB_USERNAME@'%' IDENTIFIED BY '$DB_KOLAB_PASSWORD'; +FLUSH PRIVILEGES; +EOF + + mysql $mysql_flags << EOF +ALTER USER $DB_RC_USERNAME@'%' IDENTIFIED BY '$DB_RC_PASSWORD'; +FLUSH PRIVILEGES; +EOF + +} + +if ! [ -v MYSQL_RUNNING_AS_SLAVE ]; then + create_arbitrary_users +fi diff --git a/docker/mariadb/rootfs/opt/app-root/src/mysql-init/99-create-initialized-marker.sh b/docker/mariadb/rootfs/opt/app-root/src/mysql-init/99-create-initialized-marker.sh new file mode 100644 index 00000000..aa9a7620 --- /dev/null +++ b/docker/mariadb/rootfs/opt/app-root/src/mysql-init/99-create-initialized-marker.sh @@ -0,0 +1 @@ +touch /tmp/initialized diff --git a/docker/mariadb/rootfs/opt/app-root/src/mysql-pre-init/80-check-arbitrary-users.sh b/docker/mariadb/rootfs/opt/app-root/src/mysql-pre-init/80-check-arbitrary-users.sh new file mode 100644 index 00000000..ee970ac1 --- /dev/null +++ b/docker/mariadb/rootfs/opt/app-root/src/mysql-pre-init/80-check-arbitrary-users.sh @@ -0,0 +1,18 @@ +check_arbitrary_users() { + if ! [[ -v DB_HKCCP_USERNAME && -v DB_HKCCP_PASSWORD && -v DB_HKCCP_DATABASE ]]; then + echo "You need to specify all these variables: DB_HKCCP_USERNAME, DB_HKCCP_PASSWORD, and DB_HKCCP_DATABASE" + return 1 + fi + if ! [[ -v DB_KOLAB_USERNAME && -v DB_KOLAB_PASSWORD && -v DB_KOLAB_DATABASE ]]; then + echo "You need to specify all these variables: DB_KOLAB_USERNAME, DB_KOLAB_PASSWORD, and DB_KOLAB_DATABASE" + return 1 + fi + if ! [[ -v DB_RC_USERNAME && -v DB_RC_PASSWORD && -v DB_RC_DATABASE ]]; then + echo "You need to specify all these variables: DB_RC_USERNAME, DB_RC_PASSWORD, and DB_RC_DATABASE" + return 1 + fi +} + +if ! [ -v MYSQL_RUNNING_AS_SLAVE ]; then + check_arbitrary_users +fi