Hallo Zusammen,
ich würde gerne meiner aktuellen Docker-Installation (Config beigefügt) eine Mailcow hinzufügen.
Die Mailcow liegt im selben Haupt-Verzeichnis wie alle weiteren Volumens im Unterordner „mailcow-dockerized“.
Aktuell weiß ich nicht wie sich der bereits bestehende MariaDB-Container mit einer weiteren DB nutzen lässt und ich das Ganze auch hinter den jwilder/nginx-proxy schalte.
Code
version: '3.4'
services:
Watchtower:
image: v2tec/watchtower:latest
command: --interval 30
restart: unless-stopped
container_name: Watchtower
volumes:
- /var/run/docker.sock:/var/run/docker.sock
labels:
- "traefik.enable=false"
mariadb:
image: mariadb:10.4
environment:
MYSQL_ROOT_PASSWORD: secret
MYSQL_USER: secret
MYSQL_PASSWORD: secret
restart: unless-stopped
volumes:
- ./mariadb_01/init.sql:/docker-entrypoint-initdb.d/init.sql
- ./mariadb_01/db:/var/lib/mysql
site1:
depends_on:
- mariadb
- nginx-proxy
- letsencrypt
image: wordpress
restart: unless-stopped
environment:
WORDPRESS_DB_HOST: mariadb
WORDPRESS_DB_USER: secret
WORDPRESS_DB_PASSWORD: secret
WORDPRESS_DB_NAME: site1
LETSENCRYPT_HOST: www.site1.com
LETSENCRYPT_EMAIL: info@site1.com
VIRTUAL_HOST: www.site1.com
VIRTUAL_PORT: 80
working_dir: /var/www/html
volumes:
- ./site1/html/wp-content:/var/www/html/wp-content
nginx-proxy:
image: jwilder/nginx-proxy
restart: unless-stopped
volumes:
- ./data/nginx/conf:/etc/nginx/conf.d
- ./data/nginx/vhost:/etc/nginx/vhost.d
- ./data/nginx/html:/usr/share/nginx/html
- ./data/nginx/dhparam:/etc/nginx/dhparam
- ./data/nginx/certs:/etc/nginx/certs:ro
- /var/run/docker.sock:/tmp/docker.sock:ro
- ./cloud/client.conf:/etc/nginx/conf.d/client.conf:ro
ports:
- 80:80
- 443:443
labels:
com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy: "true"
letsencrypt:
depends_on:
- nginx-proxy
image: jrcs/letsencrypt-nginx-proxy-companion
container_name: nginx-proxy-le
volumes:
- ./data/nginx/certs:/etc/nginx/certs:rw
- ./data/nginx/conf:/etc/nginx/conf.d
- ./data/nginx/vhost:/etc/nginx/vhost.d
- ./data/nginx/html:/usr/share/nginx/html
- ./data/nginx/dhparam:/etc/nginx/dhparam
- /var/run/docker.sock:/var/run/docker.sock:ro
site2:
depends_on:
- mariadb
- nginx-proxy
- letsencrypt
image: wordpress
restart: unless-stopped
environment:
WORDPRESS_DB_HOST: mariadb
WORDPRESS_DB_USER: secret
WORDPRESS_DB_PASSWORD: secret
WORDPRESS_DB_NAME: site2de
LETSENCRYPT_HOST: www.site2.de
LETSENCRYPT_EMAIL: info@site1.com
VIRTUAL_HOST: www.site2.de
VIRTUAL_PORT: 80
working_dir: /var/www/html
volumes:
- ./site2de/html/wp-content:/var/www/html/wp-content
site3:
depends_on:
- mariadb
- nginx-proxy
- letsencrypt
image: wordpress
restart: unless-stopped
environment:
WORDPRESS_DB_HOST: mariadb
WORDPRESS_DB_USER: secret
WORDPRESS_DB_PASSWORD: secret
WORDPRESS_DB_NAME: site3com
LETSENCRYPT_HOST: www.site3.com
LETSENCRYPT_EMAIL: info@site1.com
VIRTUAL_HOST: www.site3.com
VIRTUAL_PORT: 80
working_dir: /var/www/html
volumes:
- ./site3com/html/wp-content:/var/www/html/wp-content
nextcloud:
image: nextcloud:latest
container_name: nextcloud-app
depends_on:
- mariadb
volumes:
- ./cloud/nextcloud:/var/www/html:rw
- ./cloud/app/config:/var/www/html/config
- ./cloud/app/custom_apps:/var/www/html/custom_apps
- ./cloud/app/data:/var/www/html/data
- ./cloud/app/themes:/var/www/html/themes
- /etc/localtime:/etc/localtime:ro
environment:
LETSENCRYPT_HOST: cloud.site1.com
LETSENCRYPT_EMAIL: info@site1.com
VIRTUAL_HOST: cloud.site1.com
VIRTUAL_PORT: 80
MYSQL_DATABASE: nextcloud
MYSQL_USER: secret
MYSQL_PASSWORD: secret
MYSQL_HOST: mariadb
restart: unless-stopped
Alles anzeigen
Die Datei init.sql sieht wie folgt aus:
Ob ich diese richtig eingebunden habe, da bin ich mir nicht sicher...
Code
CREATE DATABASE IF NOT EXISTS site1;
CREATE DATABASE IF NOT EXISTS site3;
CREATE DATABASE IF NOT EXISTS site2;
CREATE DATABASE IF NOT EXISTS nextcloud;
GRANT ALL PRIVILEGES ON site1.* TO 'secret'@'localhost' IDENTIFIED BY 'mysql';
GRANT ALL PRIVILEGES ON site3.* TO 'secret'@'localhost' IDENTIFIED BY 'mysql';
GRANT ALL PRIVILEGES ON site2.* TO 'secret'@'localhost' IDENTIFIED BY 'mysql';
GRANT ALL PRIVILEGES ON site1.* TO 'secret'@'%' IDENTIFIED BY 'mysql';
GRANT ALL PRIVILEGES ON site3.* TO 'secret'@'%' IDENTIFIED BY 'mysql';
GRANT ALL PRIVILEGES ON site2.* TO 'secret'@'%' IDENTIFIED BY 'mysql';
GRANT ALL PRIVILEGES ON nextcloud.* TO 'secret'@'localhost' IDENTIFIED BY 'mysql';
GRANT ALL PRIVILEGES ON nextcloud.* TO 'secret'@'%' IDENTIFIED BY 'mysql';
Alles anzeigen
Für Tipps und Vorschläge zu den unklaren Punkten und Vorschläge für Verbesserungen wäre ich dankbar.
Die oben gezeigte Konfiguration läuft, auch wenn ich die Datenbanken manuell im Container MariaDB anlegen musste.
Viele Grüße