devilbox/docker-compose.yml

321 lines
8.8 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
##
##
##
##
##
## -- 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'
2016-10-09 16:47:49 +00:00
################################################################################
# SERVICES
################################################################################
services:
2017-04-19 17:48:44 +00:00
# ----------------------------------------
# HTTP
# ----------------------------------------
httpd:
# TODO: remove latest, once it is ready for the next release
2017-04-19 17:48:44 +00:00
image: cytopia/${HTTPD_SERVER}:latest
# 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
environment:
# Show all executed commands during docker entrypoint?
- DEBUG_COMPOSE_ENTRYPOINT=${DEBUG_COMPOSE_ENTRYPOINT}
# Adjust timezone
- TIMEZONE=${TIMEZONE}
# Enable PHP-FPM support
- PHP_FPM_ENABLE=1
- PHP_FPM_SERVER_ADDR=172.16.238.11
- PHP_FPM_SERVER_PORT=9000
# Tell the webserver to look into this directory
# for additional configuration files.
#
# @see volumes:: - ./etc/${HTTPD_SERVER}:/etc/${HTTPD_SERVER}
- CUSTOM_HTTPD_CONF_DIR=/etc/${HTTPD_SERVER}
ports:
# ---- Format: ----
# [HOST-ADDR : ] HOST-PORT : DOCKER-PORT
- "${LOCAL_LISTEN_ADDR}${HOST_PORT_HTTPD}:80"
networks:
app_net:
ipv4_address: 172.16.238.10
volumes:
# ---- Format: ----
# HOST-DIRECTORY : DOCKER-DIRECTORY
# 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
# Mount custom intranet
# (configured in /etc/${HTTPD_SERVER}/01-vhost-default.conf)
- ${DEVILBOX_PATH}/.devilbox/www:/var/www/default:ro
# Mount user-defined httpd log
# @see ./etc/${HTTPD_SERVER}/*.conf for log defines
- ${DEVILBOX_PATH}/log/${HTTPD_SERVER}:/var/log/${HTTPD_SERVER}
# Mount custom mass virtual hosting
# (configured in /etc/${HTTPD_SERVER}/02-vhost-mass.conf)
- ${HOST_PATH_TO_WWW_DOCROOTS}:/shared/httpd:ro
depends_on:
- php
2017-04-19 17:48:44 +00:00
# ----------------------------------------
# PHP-FPM
# ----------------------------------------
php:
# TODO: remove latest, once it is ready for the next release
image: cytopia/${PHP_SERVER}:latest
# 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
environment:
# Show all executed commands during docker entrypoint?
- DEBUG_COMPOSE_ENTRYPOINT=${DEBUG_COMPOSE_ENTRYPOINT}
# Adjust timezone
- TIMEZONE=${TIMEZONE}
##
## PHP Xdebug
##
- PHP_XDEBUG_ENABLE=${PHP_XDEBUG_ENABLE}
- PHP_XDEBUG_REMOTE_PORT=${PHP_XDEBUG_REMOTE_PORT}
- PHP_XDEBUG_REMOTE_HOST=${PHP_XDEBUG_REMOTE_HOST}
##
## Postfix on
##
- ENABLE_MAIL=1
##
## Map remote MySQL Port to 127.0.0.1
##
- FORWARD_MYSQL_PORT_TO_LOCALHOST=1
- MYSQL_REMOTE_ADDR=172.16.238.12
- MYSQL_REMOTE_PORT=3306
- MYSQL_LOCAL_PORT=3306
2016-10-09 16:47:49 +00:00
2017-04-19 17:48:44 +00:00
##
## Mount remote MySQL socket file to local disk
##
- MOUNT_MYSQL_SOCKET_TO_LOCALDISK=1
- MYSQL_SOCKET_PATH=/tmp/mysql/mysqld.sock
##
## Map remote PostgreSQL Port to 127.0.0.1
##
# TODO
##
## Mount remote PostgreSQL socket file to local disk
##
# TODO
2016-10-09 16:47:49 +00:00
2017-04-19 17:48:44 +00:00
##
## Additional variables needed by custom intranet
##
- HOST_PATH_TO_WWW_DOCROOTS=${HOST_PATH_TO_WWW_DOCROOTS}
- HOST_PORT_HTTPD=${HOST_PORT_HTTPD}
- HOST_PATH_TO_MYSQL_DATADIR=${HOST_PATH_TO_MYSQL_DATADIR}
- HOST_PATH_TO_POSTGRES_DATADIR=${HOST_PATH_TO_POSTGRES_DATADIR}
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
- POSTGRES_USER=${POSTGRES_USER}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
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
# (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
2017-04-19 17:48:44 +00:00
# Mount logs
- ${DEVILBOX_PATH}/log/${PHP_SERVER}:/var/log/php-fpm
2016-10-09 16:47:49 +00:00
2017-04-19 17:48:44 +00:00
# Mount MySQL Socket directory
- mysql_socket_volume:/tmp/mysql
2016-10-09 16:47:49 +00:00
2017-04-19 17:48:44 +00:00
# Mount Mail directory
#- ${DEVILBOX_PATH}/run/mail:/var/mail
2016-10-09 16:47:49 +00:00
2017-04-19 17:48:44 +00:00
# Mount devilbox user-defined *.ini files in order
# to overwrite the default PHP configuration
- ${DEVILBOX_PATH}/cfg/${PHP_SERVER}:/etc/php-custom.d:ro
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_TO_WWW_DOCROOTS}:/shared/httpd
2016-10-09 16:47:49 +00:00
depends_on:
- mysql
- postgres
2017-04-19 17:48:44 +00:00
# ----------------------------------------
# DATABASE
# ----------------------------------------
mysql:
# TODO: remove latest, once it is ready for the next release
2017-04-19 17:48:44 +00:00
image: cytopia/${MYSQL_SERVER}:latest
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:
2017-04-19 17:48:44 +00:00
# Show all executed commands during docker entrypoint?
- DEBUG_COMPOSE_ENTRYPOINT=${DEBUG_COMPOSE_ENTRYPOINT}
2017-04-19 17:48:44 +00:00
# Adjust timezone
- TIMEZONE=${TIMEZONE}
2016-10-09 16:47:49 +00:00
2017-04-19 17:48:44 +00:00
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
- MYSQL_SOCKET_DIR=/tmp/mysql
2016-10-09 16:47:49 +00:00
2017-04-19 17:48:44 +00:00
# Runtime settings
- 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
2017-04-19 17:48:44 +00:00
# Mount MySQL Socket directory
- mysql_socket_volume:/tmp/mysql
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/conf.d:ro
2016-10-09 16:47:49 +00:00
2017-04-19 17:48:44 +00:00
# Mount MySQL Data directory
- ${HOST_PATH_TO_MYSQL_DATADIR}:/var/lib/mysql
2016-10-09 16:47:49 +00:00
2017-04-19 17:48:44 +00:00
# ----------------------------------------
# POSTGRES
# ----------------------------------------
postgres:
image: postgres:${POSTGRES_SERVER}
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:
2017-04-19 17:48:44 +00:00
- POSTGRES_USER=${POSTGRES_USER}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- 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_POSTGRES}: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
- ${DEVILBOX_PATH}/log/postgres-${POSTGRES_SERVER}:/var/log/postgresql
2016-11-15 18:52:39 +00:00
2017-04-19 17:48:44 +00:00
# Mount PostgreSQL Socket directory
- pgsql_socket_volume:/var/run/postgresql
2016-11-15 18:52:39 +00:00
2017-04-19 17:48:44 +00:00
# Mount PostgreSQL Data directory
- ${HOST_PATH_TO_POSTGRES_DATADIR}:/var/lib/postgresql/data/pgdata
2016-11-15 18:52:39 +00:00
2016-10-09 16:47:49 +00:00
################################################################################
# VOLUMES
################################################################################
volumes:
# Create volume for mysql socket.
# This removes the need to mount the socket to the host
# but be able to mount it to different containers (from another container)
mysql_socket_volume:
# Create volume for postgresql socket.
# This removes the need to mount the socket to the host
# but be able to mount it to different containers (from another container)
pgsql_socket_volume:
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