devilbox/docker-compose.yml

481 lines
11 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 --
##
## 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)
# ----------------------------------------
bind:
image: cytopia/bind:latest
#image: cytopia/bind:0.10
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"
- "${LOCAL_LISTEN_ADDR}${HOST_PORT_BIND:-1053}:53/udp"
2017-05-10 19:27:10 +00:00
environment:
##
## Debug?
##
- DEBUG_COMPOSE_ENTRYPOINT
##
## Bind settings
##
- WILDCARD_DOMAIN=${TLD_SUFFIX:-loc}
- WILDCARD_ADDRESS=172.16.238.11
- DNS_FORWARDER=${BIND_DNS_RESOLVER:-8.8.8.8,8.8.4.4}
2017-05-10 19:27:10 +00:00
dns:
- 127.0.0.1
networks:
app_net:
ipv4_address: 172.16.238.100
2017-04-19 17:48:44 +00:00
# ----------------------------------------
# PHP-FPM
2017-04-19 17:48:44 +00:00
# ----------------------------------------
php:
image: cytopia/${PHP_SERVER:-php-fpm-7.0}:latest
#image: cytopia/${PHP_SERVER:-php-fpm-7.0}:0.11
2017-05-10 19:27:10 +00:00
restart: always
2017-04-19 17:48:44 +00:00
# Manually build via `docker-compose build`
#build:
#context: https://github.com/cytopia/docker-${PHP_SERVER}.git#1
# context: https://github.com/cytopia/docker-${PHP_SERVER}.git
2017-04-19 17:48:44 +00:00
environment:
##
## Debug?
##
- DEBUG_COMPOSE_ENTRYPOINT
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
##
## TLD SUffix
##
- TLD_SUFFIX=${TLD_SUFFIX:-loc}
- DNS_CHECK_TIMEOUT=${DNS_CHECK_TIMEOUT:-1}
##
## PHP Xdebug
##
- PHP_XDEBUG_ENABLE
- PHP_XDEBUG_REMOTE_PORT
- PHP_XDEBUG_REMOTE_HOST
2017-04-19 17:48:44 +00:00
##
## Mail-catching
##
- ENABLE_MAIL=1
##
## Enable 127.0.0.1 Port-forwarding
##
2017-05-22 21:20:20 +00:00
- FORWARD_PORTS_TO_LOCALHOST=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
##
## Additional variables to announce to intranet/php-container
##
# Ports
2017-05-06 09:27:00 +00:00
- LOCAL_LISTEN_ADDR
2017-05-10 19:27:10 +00:00
- HOST_PORT_BIND
- HOST_PORT_HTTPD
2017-05-06 09:27:00 +00:00
- HOST_PORT_MYSQL
- HOST_PORT_PGSQL
- HOST_PORT_REDIS
- HOST_PORT_MEMCD
2017-05-22 21:20:20 +00:00
- HOST_PORT_MONGO
2017-05-06 09:27:00 +00:00
# Data dir paths
- HOST_PATH_HTTPD_DATADIR
- HOST_PATH_MYSQL_DATADIR
- HOST_PATH_PGSQL_DATADIR
2017-05-22 21:20:20 +00:00
- HOST_PATH_MONGO_DATADIR
# Database credentials
- PGSQL_ROOT_USER
- PGSQL_ROOT_PASSWORD
- MYSQL_ROOT_PASSWORD
# Selected Server versions
- PHP_SERVER
- HTTPD_SERVER
- PGSQL_SERVER
- MYSQL_SERVER
- REDIS_SERVER
- MEMCD_SERVER
2017-05-22 21:20:20 +00:00
- MONGO_SERVER
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
2017-05-10 19:27:10 +00:00
dns:
- 172.16.238.100
- 8.8.8.8
- 8.8.4.4
2017-04-19 17:48:44 +00:00
volumes:
# ---- Format: ----
# HOST-DIRECTORY : DOCKER-DIRECTORY
# Mount custom intranet
# (configured in /etc/${HTTPD_SERVER}/01-vhost-default.conf)
- ${DEVILBOX_PATH}/.devilbox/www:/var/www/default:ro
# Mount logs
- ${DEVILBOX_PATH}/log/${PHP_SERVER}:/var/log/php
# Mount Mail directory
#- ${DEVILBOX_PATH}/run/mail:/var/mail
# Mount DB Backup directory
- ${DEVILBOX_PATH}/backups:/shared/backups
# Mount devilbox user-defined *.ini files in order
# to overwrite the default PHP configuration
- ${DEVILBOX_PATH}/cfg/${PHP_SERVER}:/etc/php-custom.d:ro
2017-04-19 17:48:44 +00:00
# Mount devilbox user-defined *.so files in order
# to load custom PHP modules
- ${DEVILBOX_PATH}/mod/${PHP_SERVER}:/usr/lib64/php/custom-modules:ro
# Mount devilbox user-defined bash config
- ${DEVILBOX_PATH}/bash:/etc/bashrc-devilbox.d
2017-04-19 17:48:44 +00:00
# Mount custom mass virtual hosting
# (configured in /etc/${HTTPD_SERVER}/02-vhost-mass.conf)
- ${HOST_PATH_HTTPD_DATADIR}:/shared/httpd
2017-05-10 19:27:10 +00:00
depends_on:
- bind
2017-04-19 17:48:44 +00:00
# ----------------------------------------
# HTTPD
2017-04-19 17:48:44 +00:00
# ----------------------------------------
httpd:
image: cytopia/${HTTPD_SERVER:-nginx-stable}:latest
#image: cytopia/${HTTPD_SERVER:-nginx-stable}:0.9
2017-05-10 19:27:10 +00:00
restart: always
2017-04-19 17:48:44 +00:00
# Manually build via `docker-compose build`
#build:
#context: https://github.com/cytopia/docker-${HTTPD_SERVER}.git#1
# context: https://github.com/cytopia/docker-${HTTPD_SERVER}.git
2017-04-19 17:48:44 +00:00
environment:
##
## Debug?
2017-04-19 17:48:44 +00:00
##
- DEBUG_COMPOSE_ENTRYPOINT
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
##
## PHP-FPM Remote Server
2017-04-19 17:48:44 +00:00
##
- PHP_FPM_ENABLE=1
- PHP_FPM_SERVER_ADDR=php
- PHP_FPM_SERVER_PORT=9000
2017-04-19 17:48:44 +00:00
## Tell the webserver to look into this directory
## for additional configuration files.
2017-04-19 17:48:44 +00:00
##
## @see volumes:: - ./etc/${HTTPD_SERVER}:/etc/${HTTPD_SERVER}
- CUSTOM_HTTPD_CONF_DIR=/etc/${HTTPD_SERVER}
2016-10-09 16:47:49 +00:00
ports:
# ---- Format: ----
# [HOST-ADDR : ] HOST-PORT : DOCKER-PORT
- "${LOCAL_LISTEN_ADDR}${HOST_PORT_HTTPD}:80"
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
# Custom scripts/binaries required for httpd server vhost
# configuration to work.
# (configured in /etc/${HTTPD_SERVER}/02-vhost-mass.conf)
- ${DEVILBOX_PATH}/.devilbox/bin/${HTTPD_SERVER}:/opt/bin:ro
# Mount user-defined httpd configuration files
# @see environment::CUSTOM_HTTPD_CONF_DIR for how this
# is added in httpd server
- ${DEVILBOX_PATH}/.devilbox/etc/${HTTPD_SERVER}:/etc/${HTTPD_SERVER}:ro
2017-04-19 17:48:44 +00:00
# Mount custom intranet
# (configured in /etc/${HTTPD_SERVER}/01-vhost-default.conf)
- ${DEVILBOX_PATH}/.devilbox/www:/var/www/default:ro
2016-11-15 18:52:39 +00:00
# Mount user-defined httpd log
# @see ./etc/${HTTPD_SERVER}/*.conf for log defines
- ${DEVILBOX_PATH}/log/${HTTPD_SERVER}:/var/log/${HTTPD_SERVER}
2016-10-09 16:47:49 +00:00
2017-04-19 17:48:44 +00:00
# Mount custom mass virtual hosting
# (configured in /etc/${HTTPD_SERVER}/02-vhost-mass.conf)
- ${HOST_PATH_HTTPD_DATADIR}:/shared/httpd:ro
2016-10-09 16:47:49 +00:00
depends_on:
2017-05-10 19:27:10 +00:00
- bind
- php
2017-04-19 17:48:44 +00:00
# ----------------------------------------
# DATABASE
# ----------------------------------------
mysql:
image: cytopia/${MYSQL_SERVER:-mariadb-10.1}:latest
#image: cytopia/${MYSQL_SERVER:-mariadb-10.1}:0.9
2016-10-09 16:47:49 +00:00
2017-04-19 17:48:44 +00:00
# Manually build via `docker-compose build`
#build:
#context: https://github.com/cytopia/docker-${MYSQL_SERVER}.git#1
# context: https://github.com/cytopia/docker-${MYSQL_SERVER}.git
2016-10-09 16:47:49 +00:00
2017-04-19 17:48:44 +00:00
environment:
##
## Debug?
##
- DEBUG_COMPOSE_ENTRYPOINT
##
## Adjust timezone
##
- TIMEZONE
2016-10-09 16:47:49 +00:00
##
## Adjust Root password
##
- MYSQL_ROOT_PASSWORD
2016-10-09 16:47:49 +00:00
##
## Socket directory Path
##
2017-04-19 17:48:44 +00:00
- MYSQL_SOCKET_DIR=/tmp/mysql
2016-10-09 16:47:49 +00:00
##
## Runtime settings
##
2017-04-19 17:48:44 +00:00
- MYSQL_GENERAL_LOG=${MYSQL_GENERAL_LOG}
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 logs
- ${DEVILBOX_PATH}/log/${MYSQL_SERVER}:/var/log/mysql
2016-10-09 16:47:49 +00:00
# Mount devilbox default overwrites
- ${DEVILBOX_PATH}/.devilbox/etc/${MYSQL_SERVER}:/etc/mysql/conf.d:ro
2017-04-19 17:48:44 +00:00
# Mount devilbox user-defined cnf files in order
# to overwrite the MySQL server configuration
- ${DEVILBOX_PATH}/cfg/${MYSQL_SERVER}:/etc/mysql/docker-default.d:ro
2016-10-09 16:47:49 +00:00
2017-04-19 17:48:44 +00:00
# Mount MySQL Data directory
- ${HOST_PATH_MYSQL_DATADIR}/${MYSQL_SERVER}:/var/lib/mysql
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
2017-04-19 17:48:44 +00:00
# ----------------------------------------
# POSTGRESQL
2017-04-19 17:48:44 +00:00
# ----------------------------------------
pgsql:
image: postgres:${PGSQL_SERVER:-9.6}
2016-10-09 16:47:49 +00:00
2017-04-19 17:48:44 +00:00
# Manually build via `docker-compose build`
#build:
#context: https://github.com/cytopia/docker-${MYSQL_SERVER}.git#1
# context: https://github.com/cytopia/docker-${MYSQL_SERVER}.git
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
2017-05-06 09:27:00 +00:00
- ${DEVILBOX_PATH}/log/pgsql-${PGSQL_SERVER}:/var/log/postgresql
2016-11-15 18:52:39 +00:00
2017-04-19 17:48:44 +00:00
# Mount PostgreSQL Data directory
- ${HOST_PATH_PGSQL_DATADIR}/${PGSQL_SERVER}:/var/lib/postgresql/data/pgdata
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:-3.2}
ports:
# [local-machine:]local-port:docker-port
- "${LOCAL_LISTEN_ADDR}${HOST_PORT_REDIS}:6379"
networks:
app_net:
ipv4_address: 172.16.238.14
volumes:
# ---- Format: ----
# HOST-DIRECTORY : DOCKER-DIRECTORY
# Mount logs
- ${DEVILBOX_PATH}/log/redis-${REDIS_SERVER}:/var/log/redis
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
# ----------------------------------------
# Memcached
# ----------------------------------------
memcd:
image: memcached:${MEMCD_SERVER:-latest}
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
- ${DEVILBOX_PATH}/log/memcd-${MEMCD_SERVER}:/var/log/memcd
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
2017-05-22 21:20:20 +00:00
# ----------------------------------------
# Mongo
# ----------------------------------------
mongo:
image: mongo:${MONGO_SERVER:-latest}
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
- ${HOST_PATH_MONGO_DATADIR}/${MONGO_SERVER}:/data/db
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