devilbox/docker-compose.yml

551 lines
14 KiB
YAML
Raw Normal View History

2016-10-09 16:47:49 +00:00
##
## -------------------------
## | D E V I L S T A C K |
## -------------------------
##
## Local LAMP/LEMP stack
##
##
2017-05-10 19:27:10 +00:00
## ${VARIABLE:-default} will evaluate to default if VARIABLE is unset or empty in the environment.
## ${VARIABLE-default} will evaluate to default only if VARIABLE is unset in the environment.
2016-10-09 16:47:49 +00:00
##
##
## -- DO NOT EDIT THIS FILE --
##
## Copy 'docker-compose.override.yml-example' to 'docker-compose.override.yml'
## and edit this file with your custom changes (override or even new services).
##
2016-10-09 16:47:49 +00:00
## Edit '.env' for configuration.
##
## If '.env' does not exist, copy 'env-example' to '.env'
## $ cp env-example .env
##
version: '2.1'
2016-10-09 16:47:49 +00:00
################################################################################
# SERVICES
################################################################################
services:
# ------------------------------------------------------------
2017-05-10 19:27:10 +00:00
# Bind (DNS Server)
# ------------------------------------------------------------
2017-05-10 19:27:10 +00:00
bind:
2018-04-28 14:28:13 +00:00
image: cytopia/bind:0.15
2018-12-28 22:56:14 +00:00
hostname: bind
2017-05-10 19:27:10 +00:00
restart: always
ports:
# [local-machine:]local-port:docker-port
- "${LOCAL_LISTEN_ADDR}${HOST_PORT_BIND:-1053}:53/tcp"
- "${LOCAL_LISTEN_ADDR}${HOST_PORT_BIND:-1053}:53/udp"
2017-05-10 19:27:10 +00:00
environment:
##
## Debug?
##
- DEBUG_ENTRYPOINT=${DEBUG_COMPOSE_ENTRYPOINT}
2017-05-10 19:27:10 +00:00
##
## Bind wildcard/host settings
##
- WILDCARD_DNS=${TLD_SUFFIX:-loc}=127.0.0.1
- EXTRA_HOSTS=${EXTRA_HOSTS}
##
## Forwarding
2017-05-10 19:27:10 +00:00
##
- DNS_FORWARDER=${BIND_DNS_RESOLVER:-8.8.8.8,8.8.4.4}
2017-05-10 19:27:10 +00:00
##
## Security
##
- DNSSEC_VALIDATE=${BIND_DNSSEC_VALIDATE:-no}
##
## Time settings
##
- TTL_TIME=${BIND_TTL_TIME}
- REFRESH_TIME=${BIND_REFRESH_TIME}
- RETRY_TIME=${BIND_RETRY_TIME}
- EXPIRY_TIME=${BIND_EXPIRY_TIME}
- MAX_CACHE_TIME=${BIND_MAX_CACHE_TIME}
##
## Query log
##
- DOCKER_LOGS=${BIND_LOG_DNS_QUERIES}
2017-05-10 19:27:10 +00:00
dns:
- 127.0.0.1
2018-04-28 14:28:13 +00:00
# MacOS and Windows have this by default, this hack also allows it for Linux
extra_hosts:
docker.for.lin.host.internal: 172.16.238.1
docker.for.lin.localhost: 172.16.238.1
2017-05-10 19:27:10 +00:00
networks:
app_net:
ipv4_address: 172.16.238.100
# ------------------------------------------------------------
2018-12-28 22:56:14 +00:00
# PHP
# ------------------------------------------------------------
php:
2019-05-20 21:53:53 +00:00
image: devilbox/php-fpm:${PHP_SERVER}-work-0.88
2018-12-28 22:56:14 +00:00
hostname: php
2017-04-19 17:48:44 +00:00
##
## All .env variables
##
## Source all variables defined in .env
## This also makes any custom variable available in each PHP/HHVM container
##
env_file:
- ./.env
2017-04-19 17:48:44 +00:00
environment:
##
2018-04-02 11:45:53 +00:00
## Debug/Logging
##
- DEBUG_ENTRYPOINT=${DEBUG_COMPOSE_ENTRYPOINT}
- DEBUG_COMPOSE_ENTRYPOINT
2018-04-02 11:45:53 +00:00
- DOCKER_LOGS
2017-04-19 17:48:44 +00:00
##
## UserID and GroupID
##
- NEW_UID
- NEW_GID
2017-04-19 17:48:44 +00:00
##
## Adjust timezone
##
- TIMEZONE
2017-04-19 17:48:44 +00:00
2018-05-21 08:23:55 +00:00
##
## Enable/Disable PHP Modules
##
- ENABLE_MODULES=${PHP_MODULES_ENABLE}
- DISABLE_MODULES=${PHP_MODULES_DISABLE}
##
## Mail-catching
##
- ENABLE_MAIL=1
##
## Enable 127.0.0.1 Port-forwarding
##
2018-06-03 12:37:50 +00:00
- FORWARD_PORTS_TO_LOCALHOST=80:httpd:80,443:httpd:443,3306:mysql:3306,5432:pgsql:5432,6379:redis:6379,11211:memcd:11211,27017:mongo:27017
##
## MySQL Backups
##
- MYSQL_BACKUP_USER=root
- MYSQL_BACKUP_PASS=${MYSQL_ROOT_PASSWORD}
- MYSQL_BACKUP_HOST=mysql
2018-04-28 14:28:13 +00:00
dns:
- 172.16.238.100
# MacOS and Windows have this by default, this hack also allows it for Linux
extra_hosts:
docker.for.lin.host.internal: 172.16.238.1
docker.for.lin.localhost: 172.16.238.1
2017-04-19 17:48:44 +00:00
networks:
app_net:
ipv4_address: 172.16.238.10
2017-04-19 17:48:44 +00:00
volumes:
# ---- Format: ----
# HOST-DIRECTORY : DOCKER-DIRECTORY
# Mount custom intranet
2018-08-10 07:26:14 +00:00
- ${DEVILBOX_PATH}/.devilbox/www:/var/www/default:ro${MOUNT_OPTIONS}
2017-04-19 17:48:44 +00:00
# Mount custom mass virtual hosting
2018-08-10 07:26:14 +00:00
- ${HOST_PATH_HTTPD_DATADIR}:/shared/httpd:rw${MOUNT_OPTIONS}
# Mount logs
2019-02-06 19:06:21 +00:00
- ${DEVILBOX_PATH}/log/php-fpm-${PHP_SERVER}:/var/log/php:rw${MOUNT_OPTIONS}
# Mount Mail directory
- devilbox-mail:/var/mail:rw${MOUNT_OPTIONS}
# Mount DB Backup directory
2018-08-10 07:26:14 +00:00
- ${DEVILBOX_PATH}/backups:/shared/backups:rw${MOUNT_OPTIONS}
# Mount devilbox user-defined *.ini files in order
2018-04-07 16:46:37 +00:00
# to overwrite the default PHP.ini configuration
2019-02-06 19:06:21 +00:00
- ${DEVILBOX_PATH}/cfg/php-ini-${PHP_SERVER}:/etc/php-custom.d:ro${MOUNT_OPTIONS}
2018-04-07 16:46:37 +00:00
# Mount devilbox user-defined PHP-FPM *.conf files in order
# to overwrite the default PHP-FPM configuration
2019-02-06 19:06:21 +00:00
- ${DEVILBOX_PATH}/cfg/php-fpm-${PHP_SERVER}:/etc/php-fpm-custom.d:ro${MOUNT_OPTIONS}
2017-04-19 17:48:44 +00:00
# Mount devilbox user-defined *.so files in order
# to load custom PHP modules
2019-02-06 19:06:21 +00:00
- ${DEVILBOX_PATH}/mod/php-fpm-${PHP_SERVER}:/usr/lib64/php/custom-modules:ro${MOUNT_OPTIONS}
2018-12-25 15:40:19 +00:00
# Mount devilbox user-defined PHP-FPM startup *.sh scripts
- ${DEVILBOX_PATH}/cfg/php-startup-${PHP_SERVER}:/startup.1.d:rw${MOUNT_OPTIONS}
- ${DEVILBOX_PATH}/autostart:/startup.2.d:rw${MOUNT_OPTIONS}
2018-12-25 15:40:19 +00:00
# Mount devilbox user-defined bash config
2018-08-10 07:26:14 +00:00
- ${DEVILBOX_PATH}/bash:/etc/bashrc-devilbox.d:rw${MOUNT_OPTIONS}
# Certificate Authority public key
2018-08-10 07:26:14 +00:00
- ${DEVILBOX_PATH}/ca:/ca:rw${MOUNT_OPTIONS}
2017-05-10 19:27:10 +00:00
depends_on:
- bind
2017-04-19 17:48:44 +00:00
# ------------------------------------------------------------
# Web Server
# ------------------------------------------------------------
httpd:
image: devilbox/${HTTPD_SERVER}:0.30
2018-12-28 22:56:14 +00:00
hostname: httpd
2017-04-19 17:48:44 +00:00
environment:
##
2018-04-02 11:45:53 +00:00
## Debug/Logging
2017-04-19 17:48:44 +00:00
##
- DEBUG_ENTRYPOINT=${DEBUG_COMPOSE_ENTRYPOINT}
- DEBUG_RUNTIME=${DEBUG_COMPOSE_ENTRYPOINT}
2018-04-02 11:45:53 +00:00
- DOCKER_LOGS
2016-10-09 16:47:49 +00:00
2017-04-19 17:48:44 +00:00
##
## Adjust timezone
2017-04-19 17:48:44 +00:00
##
- TIMEZONE
2017-04-19 17:48:44 +00:00
##
## UserID and GroupID
##
- NEW_UID
- NEW_GID
##
## Nginx specific worker/connection settings
##
- WORKER_PROCESSES=${HTTPD_NGINX_WORKER_PROCESSES:-auto}
- WORKER_CONNECTIONS=${HTTPD_NGINX_WORKER_CONNECTIONS:-1024}
##
## Disable default vhost?
##
- MAIN_VHOST_ENABLE=${DEVILBOX_UI_ENABLE}
2017-09-26 15:44:31 +00:00
- MAIN_VHOST_STATUS_ENABLE=1
- MAIN_VHOST_STATUS_ALIAS=/devilbox-httpd-status
- MAIN_VHOST_SSL_TYPE=both
- MAIN_VHOST_SSL_GEN=1
- MAIN_VHOST_SSL_CN=${DEVILBOX_UI_SSL_CN:-localhost}
##
## Enable Mass Vhosts
##
- MASS_VHOST_ENABLE=1
- MASS_VHOST_TLD=.${TLD_SUFFIX}
- MASS_VHOST_DOCROOT=${HTTPD_DOCROOT_DIR}
- MASS_VHOST_TPL=${HTTPD_TEMPLATE_DIR}
- MASS_VHOST_SSL_TYPE=both
- MASS_VHOST_SSL_GEN=1
2017-04-19 17:48:44 +00:00
##
## PHP-FPM Remote Server
2017-04-19 17:48:44 +00:00
##
- COMPAT=${PHP_SERVER}
- PHP_FPM_ENABLE=1
- PHP_FPM_SERVER_ADDR=php
- PHP_FPM_SERVER_PORT=9000
- PHP_FPM_TIMEOUT=${HTTPD_TIMEOUT_TO_PHP_FPM:-180}
2017-04-19 17:48:44 +00:00
ports:
# ---- Format: ----
# [HOST-ADDR : ] HOST-PORT : DOCKER-PORT
- "${LOCAL_LISTEN_ADDR}${HOST_PORT_HTTPD}:80"
2018-04-30 18:50:28 +00:00
- "${LOCAL_LISTEN_ADDR}${HOST_PORT_HTTPD_SSL}:443"
2016-10-09 16:47:49 +00:00
2017-04-19 17:48:44 +00:00
networks:
app_net:
ipv4_address: 172.16.238.11
2016-10-09 16:47:49 +00:00
2017-04-19 17:48:44 +00:00
volumes:
# ---- Format: ----
# HOST-DIRECTORY : DOCKER-DIRECTORY
2016-11-15 18:52:39 +00:00
2017-04-19 17:48:44 +00:00
# Mount custom intranet
2018-08-10 07:26:14 +00:00
- ${DEVILBOX_PATH}/.devilbox/www:/var/www/default:ro${MOUNT_OPTIONS}
2016-11-15 18:52:39 +00:00
2017-04-19 17:48:44 +00:00
# Mount custom mass virtual hosting
2018-08-10 07:26:14 +00:00
- ${HOST_PATH_HTTPD_DATADIR}:/shared/httpd:rw${MOUNT_OPTIONS}
# Mount custom web server config directory
2019-02-06 19:06:21 +00:00
- ${DEVILBOX_PATH}/cfg/${HTTPD_SERVER}:/etc/httpd-custom.d:rw${MOUNT_OPTIONS}
# Mount custom vhost-templates
2018-08-10 07:26:14 +00:00
- ${DEVILBOX_PATH}/cfg/vhost-gen:/etc/vhost-gen.d:rw${MOUNT_OPTIONS}
# Mount logs
2019-02-06 19:06:21 +00:00
- ${DEVILBOX_PATH}/log/${HTTPD_SERVER}:/var/log/${HTTPD_SERVER}:rw${MOUNT_OPTIONS}
2016-10-09 16:47:49 +00:00
# Certificate Authority public key
2018-08-10 07:26:14 +00:00
- ${DEVILBOX_PATH}/ca:/ca:rw${MOUNT_OPTIONS}
depends_on:
2017-05-10 19:27:10 +00:00
- bind
- php
# ------------------------------------------------------------
# MySQL Database
# ------------------------------------------------------------
2017-04-19 17:48:44 +00:00
mysql:
image: devilbox/mysql:${MYSQL_SERVER}-0.3
2018-12-28 22:56:14 +00:00
hostname: mysql
2016-10-09 16:47:49 +00:00
2017-04-19 17:48:44 +00:00
environment:
- MYSQL_ROOT_PASSWORD
2019-02-28 13:31:18 +00:00
- MYSQL_ALLOW_EMPTY_PASSWORD=yes
2016-10-09 16:47:49 +00:00
2017-04-19 17:48:44 +00:00
ports:
# [local-machine:]local-port:docker-port
- "${LOCAL_LISTEN_ADDR}${HOST_PORT_MYSQL}:3306"
2016-10-09 16:47:49 +00:00
2017-04-19 17:48:44 +00:00
networks:
app_net:
ipv4_address: 172.16.238.12
2016-10-09 16:47:49 +00:00
2017-04-19 17:48:44 +00:00
volumes:
# ---- Format: ----
# HOST-DIRECTORY : DOCKER-DIRECTORY
2016-10-09 16:47:49 +00:00
2017-04-19 17:48:44 +00:00
# Mount devilbox user-defined cnf files in order
# to overwrite the MySQL server configuration
2019-02-06 19:06:21 +00:00
- ${DEVILBOX_PATH}/cfg/${MYSQL_SERVER}:/etc/mysql/docker-default.d:ro${MOUNT_OPTIONS}
2016-10-09 16:47:49 +00:00
2017-04-19 17:48:44 +00:00
# Mount MySQL Data directory
2019-02-06 19:06:21 +00:00
- devilbox-${MYSQL_SERVER}:/var/lib/mysql:rw${MOUNT_OPTIONS}
2017-05-06 09:27:00 +00:00
depends_on:
2017-05-10 19:27:10 +00:00
- bind
- php
- httpd
2016-10-09 16:47:49 +00:00
# ------------------------------------------------------------
# PostgreSQL
# ------------------------------------------------------------
pgsql:
image: postgres:${PGSQL_SERVER}
2018-12-28 22:56:14 +00:00
hostname: pgsql
2016-10-09 16:47:49 +00:00
2017-04-19 17:48:44 +00:00
environment:
- POSTGRES_USER=${PGSQL_ROOT_USER}
- POSTGRES_PASSWORD=${PGSQL_ROOT_PASSWORD}
2017-04-19 17:48:44 +00:00
- PGDATA=/var/lib/postgresql/data/pgdata
2016-10-09 16:47:49 +00:00
2017-04-19 17:48:44 +00:00
ports:
# [local-machine:]local-port:docker-port
- "${LOCAL_LISTEN_ADDR}${HOST_PORT_PGSQL}:5432"
2016-10-09 16:47:49 +00:00
2017-04-19 17:48:44 +00:00
networks:
app_net:
ipv4_address: 172.16.238.13
2016-11-15 18:52:39 +00:00
2017-04-19 17:48:44 +00:00
volumes:
# ---- Format: ----
# HOST-DIRECTORY : DOCKER-DIRECTORY
2016-11-15 18:52:39 +00:00
2017-04-19 17:48:44 +00:00
# Mount logs
2019-02-06 19:06:21 +00:00
- ${DEVILBOX_PATH}/log/pgsql-${PGSQL_SERVER}:/var/log/postgresql:rw${MOUNT_OPTIONS}
2016-11-15 18:52:39 +00:00
2017-04-19 17:48:44 +00:00
# Mount PostgreSQL Data directory
2019-02-06 19:06:21 +00:00
- devilbox-pgsql-${PGSQL_SERVER}:/var/lib/postgresql/data/pgdata:rw${MOUNT_OPTIONS}
2017-05-06 09:27:00 +00:00
depends_on:
2017-05-10 19:27:10 +00:00
- bind
- php
- httpd
# ------------------------------------------------------------
# Redis
# ------------------------------------------------------------
redis:
image: redis:${REDIS_SERVER}
2018-12-28 22:56:14 +00:00
hostname: redis
# Apply custom arguments to redis startup
command: redis-server ${REDIS_ARGS:- }
environment:
- REDIS_ARGS=${REDIS_ARGS:- }
ports:
# [local-machine:]local-port:docker-port
- "${LOCAL_LISTEN_ADDR}${HOST_PORT_REDIS}:6379"
networks:
app_net:
ipv4_address: 172.16.238.14
2017-05-06 09:27:00 +00:00
depends_on:
2017-05-10 19:27:10 +00:00
- bind
2017-05-06 09:27:00 +00:00
- php
- httpd
# ------------------------------------------------------------
2017-05-06 09:27:00 +00:00
# Memcached
# ------------------------------------------------------------
memcd:
image: memcached:${MEMCD_SERVER}
2018-12-28 22:56:14 +00:00
hostname: memcd
2017-05-06 09:27:00 +00:00
ports:
# [local-machine:]local-port:docker-port
- "${LOCAL_LISTEN_ADDR}${HOST_PORT_MEMCD}:11211"
2017-05-06 09:27:00 +00:00
networks:
app_net:
ipv4_address: 172.16.238.15
volumes:
# ---- Format: ----
# HOST-DIRECTORY : DOCKER-DIRECTORY
# Mount logs
2019-02-06 19:06:21 +00:00
- ${DEVILBOX_PATH}/log/memcd-${MEMCD_SERVER}:/var/log/memcd:rw${MOUNT_OPTIONS}
2017-05-06 09:27:00 +00:00
depends_on:
2017-05-10 19:27:10 +00:00
- bind
- php
- httpd
2016-11-15 18:52:39 +00:00
2016-10-09 16:47:49 +00:00
# ------------------------------------------------------------
# MongoDB
# ------------------------------------------------------------
2017-05-22 21:20:20 +00:00
mongo:
image: mongo:${MONGO_SERVER}
2018-12-28 22:56:14 +00:00
hostname: mongo
2017-05-22 21:20:20 +00:00
ports:
# [local-machine:]local-port:docker-port
- "${LOCAL_LISTEN_ADDR}${HOST_PORT_MONGO}:27017"
networks:
app_net:
ipv4_address: 172.16.238.16
volumes:
# ---- Format: ----
# HOST-DIRECTORY : DOCKER-DIRECTORY
# Mount MongoDB Data directory
2019-02-06 19:06:21 +00:00
- devilbox-mongo-${MONGO_SERVER}:/data/db:rw${MOUNT_OPTIONS}
2017-05-22 21:20:20 +00:00
depends_on:
- bind
- php
- httpd
2016-10-09 16:47:49 +00:00
################################################################################
# NETWORK
################################################################################
networks:
app_net:
driver: bridge
driver_opts:
com.docker.network.enable_ipv6: "false"
ipam:
driver: default
config:
2017-04-19 17:48:44 +00:00
- subnet: 172.16.238.0/24
gateway: 172.16.238.1
2019-02-28 13:31:18 +00:00
################################################################################
# VOLUMES
################################################################################
volumes:
# ------------------------------------------------------------
# Misc
# ------------------------------------------------------------
devilbox-mail:
2018-11-17 12:27:17 +00:00
# ------------------------------------------------------------
# MySQL
# ------------------------------------------------------------
devilbox-mysql-5.5:
devilbox-mysql-5.6:
devilbox-mysql-5.7:
devilbox-mysql-8.0:
devilbox-mariadb-5.5:
devilbox-mariadb-10.0:
devilbox-mariadb-10.1:
devilbox-mariadb-10.2:
devilbox-mariadb-10.3:
2019-02-28 13:31:18 +00:00
devilbox-mariadb-10.4:
devilbox-percona-5.5:
devilbox-percona-5.6:
devilbox-percona-5.7:
2019-02-28 13:31:18 +00:00
devilbox-percona-8.0:
# ------------------------------------------------------------
# Postgres
# ------------------------------------------------------------
2018-09-22 10:43:49 +00:00
devilbox-pgsql-9.0:
devilbox-pgsql-9.1:
devilbox-pgsql-9.2:
2018-11-17 12:27:17 +00:00
devilbox-pgsql-9.2-alpine:
devilbox-pgsql-9.3:
2018-11-17 12:27:17 +00:00
devilbox-pgsql-9.3-alpine:
devilbox-pgsql-9.4:
2018-11-17 12:27:17 +00:00
devilbox-pgsql-9.4-alpine:
devilbox-pgsql-9.5:
2018-11-17 12:27:17 +00:00
devilbox-pgsql-9.5-alpine:
devilbox-pgsql-9.6:
2018-11-17 12:27:17 +00:00
devilbox-pgsql-9.6-alpine:
devilbox-pgsql-10.0:
2018-11-17 12:27:17 +00:00
devilbox-pgsql-10.0-alpine:
devilbox-pgsql-10.1:
2018-11-17 12:27:17 +00:00
devilbox-pgsql-10.1-alpine:
devilbox-pgsql-10.2:
2018-11-17 12:27:17 +00:00
devilbox-pgsql-10.2-alpine:
devilbox-pgsql-10.3:
2018-11-17 12:27:17 +00:00
devilbox-pgsql-10.3-alpine:
devilbox-pgsql-10.4:
2018-11-17 12:27:17 +00:00
devilbox-pgsql-10.4-alpine:
devilbox-pgsql-10.5:
2018-11-17 12:27:17 +00:00
devilbox-pgsql-10.5-alpine:
devilbox-pgsql-10.6:
devilbox-pgsql-10.6-alpine:
devilbox-pgsql-11.0:
devilbox-pgsql-11.0-alpine:
devilbox-pgsql-11.1:
devilbox-pgsql-11.1-alpine:
2018-09-22 10:43:49 +00:00
devilbox-pgsql-latest:
2018-11-17 12:27:17 +00:00
devilbox-pgsql-alpine:
# ------------------------------------------------------------
# MongoDB
# ------------------------------------------------------------
devilbox-mongo-2.8:
devilbox-mongo-3.0:
devilbox-mongo-3.2:
devilbox-mongo-3.4:
devilbox-mongo-3.6:
devilbox-mongo-4.0:
devilbox-mongo-latest: