better compose added

This commit is contained in:
2022-10-13 19:43:57 -04:00
parent 37b6c43555
commit 079c186656
7 changed files with 244 additions and 67 deletions

View File

@@ -1,71 +1,176 @@
version: "3"
version: '3.7'
x-icinga-db-web-config:
&icinga-db-web-config
icingaweb.modules.icingadb.config.icingadb.resource: icingadb
icingaweb.modules.icingadb.redis.redis1.host: icingadb-redis
icingaweb.modules.icingadb.redis.redis1.port: 6379
icingaweb.modules.icingadb.commandtransports.icinga2.host: icinga2
icingaweb.modules.icingadb.commandtransports.icinga2.port: 5665
icingaweb.modules.icingadb.commandtransports.icinga2.password: ${ICINGAWEB_ICINGA2_API_USER_PASSWORD:-icingaweb}
icingaweb.modules.icingadb.commandtransports.icinga2.transport: api
icingaweb.modules.icingadb.commandtransports.icinga2.username: icingaweb
icingaweb.resources.icingadb.charset: utf8mb4
icingaweb.resources.icingadb.db: mysql
icingaweb.resources.icingadb.dbname: icingadb
icingaweb.resources.icingadb.host: mysql
icingaweb.resources.icingadb.password: ${ICINGADB_MYSQL_PASSWORD:-icingadb}
icingaweb.resources.icingadb.type: db
icingaweb.resources.icingadb.username: icingadb
x-icinga-director-config:
&icinga-director-config
icingaweb.modules.director.config.db.resource: director-mysql
icingaweb.modules.director.kickstart.config.endpoint: icinga2
icingaweb.modules.director.kickstart.config.host: icinga2
icingaweb.modules.director.kickstart.config.port: 5665
icingaweb.modules.director.kickstart.config.username: icingaweb
icingaweb.modules.director.kickstart.config.password: ${ICINGAWEB_ICINGA2_API_USER_PASSWORD:-icingaweb}
icingaweb.resources.director-mysql.charset: utf8mb4
icingaweb.resources.director-mysql.db: mysql
icingaweb.resources.director-mysql.dbname: director
icingaweb.resources.director-mysql.host: mysql
icingaweb.resources.director-mysql.password: ${ICINGA_DIRECTOR_MYSQL_PASSWORD:-director}
icingaweb.resources.director-mysql.type: db
icingaweb.resources.director-mysql.username: director
x-icinga-web-config:
&icinga-web-config
icingaweb.authentication.icingaweb2.backend: db
icingaweb.authentication.icingaweb2.resource: icingaweb-mysql
icingaweb.config.global.config_backend: db
icingaweb.config.global.config_resource: icingaweb-mysql
icingaweb.config.global.module_path: /usr/share/icingaweb2/modules
icingaweb.config.logging.log: php
icingaweb.groups.icingaweb2.backend: db
icingaweb.groups.icingaweb2.resource: icingaweb-mysql
icingaweb.passwords.icingaweb2.icingaadmin: icinga
icingaweb.resources.icingaweb-mysql.charset: utf8mb4
icingaweb.resources.icingaweb-mysql.db: mysql
icingaweb.resources.icingaweb-mysql.dbname: icingaweb
icingaweb.resources.icingaweb-mysql.host: mysql
icingaweb.resources.icingaweb-mysql.password: icingaweb
icingaweb.resources.icingaweb-mysql.type: db
icingaweb.resources.icingaweb-mysql.username: icingaweb
icingaweb.roles.Administrators.groups: Administrators
icingaweb.roles.Administrators.permissions: '*'
icingaweb.roles.Administrators.users: icingaadmin
x-icinga2-environment:
&icinga2-environment
ICINGA_CN: icinga2
ICINGA_MASTER: 1
x-logging:
&default-logging
driver: "json-file"
options:
max-file: "10"
max-size: "1M"
networks:
default:
name: icinga-playground
services:
icinga2:
image: icinga/icinga2
container_name: icinga2
#Think you need this, but not sure yet
network_mode: bridge
ports:
- "443"
- 5665:5665
- 8080:80
environment:
- MYSQL_ROOT_PASSWORD=OyZF1U6a3UrnrDoKq5X3qA
- DEFAULT_MYSQL_HOST=mysql-icingadb
- DEFAULT_MYSQL_PORT=3306
- DEFAULT_MYSQL_USER=icinga
- DEFAULT_MYSQL_PASS=tULfn6fGVZY
- PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
- APACHE2_HTTP=REDIRECT
- ICINGA2_FEATURE_GRAPHITE=false
- ICINGA2_FEATURE_GRAPHITE_HOST=graphite
- ICINGA2_FEATURE_GRAPHITE_PORT=2003
- ICINGA2_FEATURE_GRAPHITE_URL=http://graphite
- ICINGA2_FEATURE_GRAPHITE_SEND_THRESHOLDS=true
- ICINGA2_FEATURE_GRAPHITE_SEND_METADATA=false
- ICINGA2_USER_FULLNAME=Icinga2
- ICINGA2_FEATURE_DIRECTOR=true
- ICINGA2_FEATURE_DIRECTOR_KICKSTART=true
- ICINGA2_FEATURE_DIRECTOR_USER=icinga2-director
- MYSQL_ROOT_USER=root
restart: unless-stopped
mysql-icingadb:
image: mysql:8.0
container_name: mysql-icingadb
network_mode: bridge
ports:
- 3306:3306
- 33060:33060
environment:
- MYSQL_ROOT_PASSWORD=OyZF1U6a3UrnrDoKq5X3qA
- PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
- GOSU_VERSION=1.12
- MYSQL_MAJOR=8.0
- MYSQL_VERSION=8.0.25-1debian10
restart: unless-stopped
npm_app_1:
image: jc21/nginx-proxy-manager:latest
container_name: npm_app_1
restart: unless-stopped
ports:
# These ports are in format <host-port>:<container-port>
- '80:80' # Public HTTP Port
- '443:443' # Public HTTPS Port
- '81:81' # Admin Web Port
# Add any other Stream port you want to expose
# - '21:21' # FTP
# Uncomment the next line if you uncomment anything in the section
# environment:
# Uncomment this if you want to change the location of
# the SQLite DB file within the container
# DB_SQLITE_FILE: "/data/database.sqlite"
# Uncomment this if IPv6 is not enabled on your host
# DISABLE_IPV6: 'true'
director:
command:
- /bin/bash
- -ce
- |
echo "Testing the database connection. Container could restart."
(echo > /dev/tcp/mysql/3306) >/dev/null 2>&1
echo "Testing the Icinga 2 API connection. Container could restart."
(echo > /dev/tcp/icinga2/5665) >/dev/null 2>&1
icingacli director migration run
(icingacli director kickstart required && icingacli director kickstart run && icingacli director config deploy) || true
echo "Starting Icinga Director daemon."
icingacli director daemon run
entrypoint: []
logging: *default-logging
image: icinga/icingaweb2
restart: on-failure
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
- icingaweb:/data
# The Icinga 2 docker image does not support configuration via env vars at the moment.
# So, we have to ship some configs with this little init container. Referenced in depends_on of the icinga2 service.
init-icinga2:
command: [ "/config/init-icinga2.sh" ]
environment: *icinga2-environment
image: icinga/icinga2
logging: *default-logging
volumes:
- icinga2:/data
- ./icingadb.conf:/config/icingadb.conf
- ./icingaweb-api-user.conf:/config/icingaweb-api-user.conf
- ./init-icinga2.sh:/config/init-icinga2.sh
icinga2:
command: [ "sh", "-c", "sleep 5 ; icinga2 daemon" ]
depends_on:
- icingadb-redis
- init-icinga2
environment: *icinga2-environment
image: icinga/icinga2
logging: *default-logging
ports:
- 5665:5665
volumes:
- icinga2:/data
- ./icinga2.conf.d:/custom_data/custom.conf.d
icingadb:
environment:
ICINGADB_DATABASE_HOST: mysql
ICINGADB_DATABASE_PORT: 3306
ICINGADB_DATABASE_DATABASE: icingadb
ICINGADB_DATABASE_USER: icingadb
ICINGADB_DATABASE_PASSWORD: ${ICINGADB_MYSQL_PASSWORD:-icingadb}
ICINGADB_REDIS_HOST: icingadb-redis
ICINGADB_REDIS_PORT: 6379
depends_on:
- mysql
- icingadb-redis
image: icinga/icingadb
logging: *default-logging
icingadb-redis:
image: redis
logging: *default-logging
icingaweb:
depends_on:
- mysql
environment:
icingaweb.enabledModules: director, icingadb, incubator
<<: *icinga-db-web-config
<<: *icinga-director-config
<<: *icinga-web-config
logging: *default-logging
image: icinga/icingaweb2
ports:
- 8080:8080
# Restart Icinga Web container automatically since we have to wait for the database to be ready.
# Please note that this needs a more sophisticated solution.
restart: on-failure
volumes:
- icingaweb:/data
mysql:
image: mariadb:10.7
command: --default-authentication-plugin=mysql_native_password
environment:
MYSQL_RANDOM_ROOT_PASSWORD: 1
ICINGADB_MYSQL_PASSWORD: ${ICINGADB_MYSQL_PASSWORD:-icingadb}
ICINGAWEB_MYSQL_PASSWORD: ${ICINGAWEB_MYSQL_PASSWORD:-icingaweb}
ICINGA_DIRECTOR_MYSQL_PASSWORD: ${ICINGA_DIRECTOR_MYSQL_PASSWORD:-director}
logging: *default-logging
volumes:
- mysql:/var/lib/mysql
- ./env/mysql/:/docker-entrypoint-initdb.d/
volumes:
icinga2:
icingaweb:
mysql: