## ## ------------------------- ## | D E V I L S T A C K | ## ------------------------- ## ## Local LAMP/LEMP stack ## ## ## ${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. ## ## ## -- 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' ################################################################################ # SERVICES ################################################################################ services: # ---------------------------------------- # Bind (DNS Server) # ---------------------------------------- bind: image: cytopia/bind:latest restart: always ports: # [local-machine:]local-port:docker-port - "${LOCAL_LISTEN_ADDR}${HOST_PORT_BIND}:53" - "${LOCAL_LISTEN_ADDR}${HOST_PORT_BIND}/udp:53/udp" environment: ## ## Debug? ## - DEBUG_COMPOSE_ENTRYPOINT ## ## Bind settings ## - WILDCARD_DOMAIN=${TLD_SUFFIX:-loc} - WILDCARD_ADDRESS=172.16.238.11 dns: - 127.0.0.1 networks: app_net: ipv4_address: 172.16.238.100 # ---------------------------------------- # PHP-FPM # ---------------------------------------- php: # TODO: remove latest, once it is ready for the next release #image: cytopia/${PHP_SERVER:-php-fpm-5.4}:latest image: cytopia/${PHP_SERVER:-php-fpm-7.0}:release-0.9 restart: always # 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: ## ## Debug? ## - DEBUG_COMPOSE_ENTRYPOINT ## ## UserID and GroupID ## - NEW_UID - NEW_GID ## ## Adjust timezone ## - TIMEZONE ## ## 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 ## ## Mail-catching ## - ENABLE_MAIL=1 ## ## Enable 127.0.0.1 Port-forwarding ## - FORWARD_PORTS_TO_LOCALHOST=3306:mysql:3306,5432:pgsql:5432,6379:redis:6379,11211:memcached:11211 ## ## Additional variables to announce to intranet/php-container ## # Ports - LOCAL_LISTEN_ADDR - HOST_PORT_BIND - HOST_PORT_HTTPD - HOST_PORT_MYSQL - HOST_PORT_PGSQL - HOST_PORT_REDIS - HOST_PORT_MEMCACHED # Data dir paths - HOST_PATH_HTTPD_DATADIR - HOST_PATH_MYSQL_DATADIR - HOST_PATH_PGSQL_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 - MEMCACHED_SERVER networks: app_net: ipv4_address: 172.16.238.10 dns: - 172.16.238.100 - 8.8.8.8 - 8.8.4.4 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 MySQL Socket directory - vol_mysql_sock:/tmp/mysql # Mount Mail directory #- ${DEVILBOX_PATH}/run/mail:/var/mail # Mount devilbox user-defined *.ini files in order # to overwrite the default PHP configuration - ${DEVILBOX_PATH}/cfg/${PHP_SERVER}:/etc/php-custom.d:ro # Mount custom mass virtual hosting # (configured in /etc/${HTTPD_SERVER}/02-vhost-mass.conf) - ${HOST_PATH_HTTPD_DATADIR}:/shared/httpd depends_on: - bind # ---------------------------------------- # HTTPD # ---------------------------------------- httpd: # TODO: remove latest, once it is ready for the next release image: cytopia/${HTTPD_SERVER:-nginx-mainline}:latest restart: always # 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: ## ## Debug? ## - DEBUG_COMPOSE_ENTRYPOINT ## ## Adjust timezone ## - TIMEZONE ## ## PHP-FPM Remote Server ## - PHP_FPM_ENABLE=1 - PHP_FPM_SERVER_ADDR=php - 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.11 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_HTTPD_DATADIR}:/shared/httpd:ro depends_on: - bind - php # ---------------------------------------- # DATABASE # ---------------------------------------- mysql: # TODO: remove latest, once it is ready for the next release image: cytopia/${MYSQL_SERVER:-mariadb-10.1}:latest # 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 environment: ## ## Debug? ## - DEBUG_COMPOSE_ENTRYPOINT ## ## Adjust timezone ## - TIMEZONE ## ## Adjust Root password ## - MYSQL_ROOT_PASSWORD ## ## Socket directory Path ## - MYSQL_SOCKET_DIR=/tmp/mysql ## ## Runtime settings ## - MYSQL_GENERAL_LOG=${MYSQL_GENERAL_LOG} ports: # [local-machine:]local-port:docker-port - "${LOCAL_LISTEN_ADDR}${HOST_PORT_MYSQL}:3306" networks: app_net: ipv4_address: 172.16.238.12 volumes: # ---- Format: ---- # HOST-DIRECTORY : DOCKER-DIRECTORY # Mount logs - ${DEVILBOX_PATH}/log/${MYSQL_SERVER}:/var/log/mysql # Mount MySQL Socket directory - vol_mysql_sock:/tmp/mysql # Mount devilbox default overwrites - ${DEVILBOX_PATH}/.devilbox/etc/${MYSQL_SERVER}:/etc/mysql/docker-default.d:ro # Mount devilbox user-defined cnf files in order # to overwrite the MySQL server configuration - ${DEVILBOX_PATH}/cfg/${MYSQL_SERVER}:/etc/mysql/conf.d:ro # Mount MySQL Data directory - ${HOST_PATH_MYSQL_DATADIR}/${MYSQL_SERVER}:/var/lib/mysql depends_on: - bind - php - httpd # ---------------------------------------- # POSTGRESQL # ---------------------------------------- pgsql: image: postgres:${PGSQL_SERVER:-9.6} # 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 environment: - POSTGRES_USER=${PGSQL_ROOT_USER} - POSTGRES_PASSWORD=${PGSQL_ROOT_PASSWORD} - PGDATA=/var/lib/postgresql/data/pgdata ports: # [local-machine:]local-port:docker-port - "${LOCAL_LISTEN_ADDR}${HOST_PORT_PGSQL}:5432" networks: app_net: ipv4_address: 172.16.238.13 volumes: # ---- Format: ---- # HOST-DIRECTORY : DOCKER-DIRECTORY # Mount logs - ${DEVILBOX_PATH}/log/pgsql-${PGSQL_SERVER}:/var/log/postgresql # Mount PostgreSQL Socket directory - vol_pgsql_sock:/var/run/postgresql # Mount PostgreSQL Data directory - ${HOST_PATH_PGSQL_DATADIR}/${PGSQL_SERVER}:/var/lib/postgresql/data/pgdata depends_on: - 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 depends_on: - bind - php - httpd # ---------------------------------------- # Memcached # ---------------------------------------- memcached: image: memcached:${MEMCACHED_SERVER:-latest} ports: # [local-machine:]local-port:docker-port - "${LOCAL_LISTEN_ADDR}${HOST_PORT_MEMCACHED}:11211" networks: app_net: ipv4_address: 172.16.238.15 volumes: # ---- Format: ---- # HOST-DIRECTORY : DOCKER-DIRECTORY # Mount logs - ${DEVILBOX_PATH}/log/memcached-${MEMCACHED_SERVER}:/var/log/memcached depends_on: - bind - php - httpd ################################################################################ # 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) vol_mysql_sock: # 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) vol_pgsql_sock: ################################################################################ # NETWORK ################################################################################ networks: app_net: driver: bridge driver_opts: com.docker.network.enable_ipv6: "false" ipam: driver: default config: - subnet: 172.16.238.0/24 gateway: 172.16.238.1