mirror of
https://github.com/cytopia/devilbox.git
synced 2024-12-24 06:56:40 +00:00
255 lines
7.7 KiB
YAML
255 lines
7.7 KiB
YAML
# vim: set ft=yaml:
|
|
---
|
|
version: '2.3'
|
|
|
|
###
|
|
### Services
|
|
###
|
|
services:
|
|
|
|
# -----------------------------------------------------------------------------------------------
|
|
# PHP Community image
|
|
# -----------------------------------------------------------------------------------------------
|
|
php:
|
|
image: devilbox/php-fpm-community:${PHP_SERVER}-${PHP_COMMUNITY_FLAVOUR:-devilbox}
|
|
|
|
# -----------------------------------------------------------------------------------------------
|
|
# Blackfire
|
|
# -----------------------------------------------------------------------------------------------
|
|
blackfire:
|
|
image: blackfire/blackfire:${BLACKFIRE:-latest}
|
|
hostname: blackfire
|
|
environment:
|
|
- BLACKFIRE_SERVER_ID=${BLACKFIRE_SERVER_ID:-id}
|
|
- BLACKFIRE_SERVER_TOKEN=${BLACKFIRE_SERVER_TOKEN:-token}
|
|
- BLACKFIRE_CLIENT_ID=${BLACKFIRE_CLIENT_ID:-id}
|
|
- BLACKFIRE_CLIENT_TOKEN=${BLACKFIRE_CLIENT_TOKEN:-token}
|
|
networks:
|
|
app_net:
|
|
ipv4_address: 172.16.238.200
|
|
depends_on:
|
|
- bind
|
|
- php
|
|
- httpd
|
|
|
|
# -----------------------------------------------------------------------------------------------
|
|
# MailHog
|
|
# -----------------------------------------------------------------------------------------------
|
|
mailhog:
|
|
image: mailhog/mailhog:${MAILHOG_SERVER:-latest}
|
|
hostname: mailhog
|
|
ports:
|
|
- "${LOCAL_LISTEN_ADDR}${HOST_PORT_MAILHOG:-8025}:8025"
|
|
networks:
|
|
app_net:
|
|
ipv4_address: 172.16.238.201
|
|
depends_on:
|
|
- bind
|
|
- php
|
|
- httpd
|
|
|
|
# -----------------------------------------------------------------------------------------------
|
|
# Ngrok
|
|
# -----------------------------------------------------------------------------------------------
|
|
ngrok:
|
|
image: devilbox/ngrok:0.3
|
|
hostname: ngrok
|
|
environment:
|
|
- HTTP_TUNNELS=${NGROK_HTTP_TUNNELS:-httpd:httpd:80}
|
|
- AUTHTOKEN=${NGROK_AUTHTOKEN:-}
|
|
- REGION=${NGROK_REGION:-us}
|
|
ports:
|
|
- "${LOCAL_LISTEN_ADDR}${HOST_PORT_NGROK:-4040}:4040"
|
|
networks:
|
|
app_net:
|
|
ipv4_address: 172.16.238.202
|
|
depends_on:
|
|
- bind
|
|
- php
|
|
- httpd
|
|
|
|
# -----------------------------------------------------------------------------------------------
|
|
# RabbitMQ
|
|
# -----------------------------------------------------------------------------------------------
|
|
rabbit:
|
|
image: rabbitmq:${RABBIT_SERVER:-management}
|
|
hostname: rabbit
|
|
environment:
|
|
- RABBITMQ_DEFAULT_VHOST=${RABBIT_DEFAULT_VHOST:-my_vhost}
|
|
- RABBITMQ_DEFAULT_USER=${RABBIT_DEFAULT_USER:-guest}
|
|
- RABBITMQ_DEFAULT_PASS=${RABBIT_DEFAULT_PASS:-guest}
|
|
ports:
|
|
- "${LOCAL_LISTEN_ADDR}${HOST_PORT_RABBIT:-5672}:5672"
|
|
- "${LOCAL_LISTEN_ADDR}${HOST_PORT_RABBIT_MGMT:-15672}:15672"
|
|
networks:
|
|
app_net:
|
|
ipv4_address: 172.16.238.210
|
|
volumes:
|
|
- devilbox-rabbit:/var/lib/rabbitmq
|
|
depends_on:
|
|
- bind
|
|
- php
|
|
- httpd
|
|
|
|
# -----------------------------------------------------------------------------------------------
|
|
# Solr
|
|
# -----------------------------------------------------------------------------------------------
|
|
solr:
|
|
image: solr:${SOLR_SERVER:-latest}
|
|
hostname: solr
|
|
ports:
|
|
- "${LOCAL_LISTEN_ADDR}${HOST_PORT_SOLR:-8983}:8983"
|
|
networks:
|
|
app_net:
|
|
ipv4_address: 172.16.238.220
|
|
volumes:
|
|
- devilbox-solr:/opt/solr/server/solr/mycores
|
|
entrypoint:
|
|
- docker-entrypoint.sh
|
|
- solr-precreate
|
|
- ${SOLR_CORE_NAME:-devilbox}
|
|
depends_on:
|
|
- bind
|
|
- php
|
|
- httpd
|
|
|
|
# -----------------------------------------------------------------------------------------------
|
|
# Varnish
|
|
# -----------------------------------------------------------------------------------------------
|
|
varnish:
|
|
image: devilbox/varnish:${VARNISH_SERVER:-6}-0.3
|
|
hostname: varnish
|
|
ports:
|
|
- "${LOCAL_LISTEN_ADDR}${HOST_PORT_VARNISH:-6081}:6081"
|
|
networks:
|
|
app_net:
|
|
ipv4_address: 172.16.238.230
|
|
environment:
|
|
- VARNISH_CONFIG=${VARNISH_CONFIG:-/etc/varnish/default.vcl}
|
|
- CACHE_SIZE=${VARNISH_CACHE_SIZE:-128m}
|
|
- VARNISHD_PARAMS=${VARNISH_PARAMS:--p default_ttl=3600 -p default_grace=3600}
|
|
- BACKEND_HOST=httpd
|
|
- BACKEND_PORT=80
|
|
volumes:
|
|
- ${DEVILBOX_PATH}/cfg/varnish-${VARNISH_SERVER:-6}:/etc/varnish.d
|
|
depends_on:
|
|
- bind
|
|
- php
|
|
- httpd
|
|
|
|
haproxy:
|
|
image: devilbox/haproxy:0.3
|
|
hostname: haproxy
|
|
ports:
|
|
- "${LOCAL_LISTEN_ADDR}${HOST_PORT_HAPROXY:-8080}:80"
|
|
- "${LOCAL_LISTEN_ADDR}${HOST_PORT_HAPROXY_SSL:-8443}:443"
|
|
networks:
|
|
app_net:
|
|
ipv4_address: 172.16.238.231
|
|
environment:
|
|
- BACKEND_ADDR=varnish
|
|
- BACKEND_PORT=6081
|
|
- DEVILBOX_UI_SSL_CN
|
|
- TLD_SUFFIX
|
|
volumes:
|
|
# Certificate Authority public key
|
|
- ${DEVILBOX_PATH}/ca:/ca:rw${MOUNT_OPTIONS}
|
|
# Mount custom mass virtual hosting
|
|
- ${HOST_PATH_HTTPD_DATADIR}:/shared/httpd:rw${MOUNT_OPTIONS}
|
|
depends_on:
|
|
- bind
|
|
- php
|
|
- httpd
|
|
- varnish
|
|
|
|
# -----------------------------------------------------------------------------------------------
|
|
# ELK Stack
|
|
# -----------------------------------------------------------------------------------------------
|
|
elastic:
|
|
image: docker.elastic.co/elasticsearch/elasticsearch-oss:${ELK_SERVER:-6.6.1}
|
|
hostname: elastic
|
|
ports:
|
|
- "${LOCAL_LISTEN_ADDR}${HOST_PORT_ELK_ELASTIC:-9200}:9200"
|
|
networks:
|
|
app_net:
|
|
ipv4_address: 172.16.238.240
|
|
environment:
|
|
- TZ=${TIMEZONE:-UTC}
|
|
- discovery.type=single-node
|
|
volumes:
|
|
- devilbox-elastic:/usr/share/elasticsearch/data
|
|
|
|
logstash:
|
|
image: docker.elastic.co/logstash/logstash-oss:${ELK_SERVER:-6.6.1}
|
|
hostname: logstash
|
|
ports:
|
|
- "${LOCAL_LISTEN_ADDR}${HOST_PORT_ELK_LOGSTASH:-9600}:9600"
|
|
networks:
|
|
app_net:
|
|
ipv4_address: 172.16.238.241
|
|
environment:
|
|
- TZ=${TIMEZONE:-UTC}
|
|
- LOG_LEVEL=info
|
|
- HTTP_HOST=0.0.0.0
|
|
- HTTP_PORT=9600
|
|
- CONFIG_RELOAD_AUTOMATIC=true
|
|
- CONFIG_RELOAD_INTERVAL=300
|
|
- DB_HOST=DATABASE-SERVER
|
|
volumes:
|
|
- devilbox-logstash:/var/lib/logstash
|
|
depends_on:
|
|
- elastic
|
|
|
|
kibana:
|
|
image: docker.elastic.co/kibana/kibana-oss:${ELK_SERVER:-6.6.1}
|
|
hostname: kibana
|
|
ports:
|
|
- "${LOCAL_LISTEN_ADDR}${HOST_PORT_ELK_KIBANA:-5601}:5601"
|
|
networks:
|
|
app_net:
|
|
ipv4_address: 172.16.238.242
|
|
environment:
|
|
- TZ=${TIMEZONE:-UTC}
|
|
- ELASTICSEARCH_HOSTS=http://elastic:9200
|
|
- ELASTICSEARCH_URL=http://elastic:9200
|
|
depends_on:
|
|
- elastic
|
|
|
|
# -----------------------------------------------------------------------------------------------
|
|
# Python Flask
|
|
# -----------------------------------------------------------------------------------------------
|
|
|
|
# You can add more than one service here if you have multiple flask projects.
|
|
# Just duplicate the block and adjust service name, hostname and ip address.
|
|
flask1:
|
|
image: devilbox/python-flask:${PYTHON_VERSION:-3.8}-dev
|
|
hostname: flask1
|
|
ports:
|
|
- "${LOCAL_LISTEN_ADDR}${HOST_PORT_FLASK:-3000}:${FLASK_PORT:-3000}"
|
|
networks:
|
|
app_net:
|
|
ipv4_address: 172.16.238.250
|
|
volumes:
|
|
# Mount custom mass virtual hosting
|
|
- ${HOST_PATH_HTTPD_DATADIR}:/shared/httpd:rw${MOUNT_OPTIONS}
|
|
environment:
|
|
- FLASK_PROJECT=${FLASK_PROJECT}
|
|
- FLASK_PORT=${FLASK_PORT:-3000}
|
|
- FLASK_APP_DIR=${FLASK_APP_DIR:-htdocs}
|
|
- FLASK_APP_FILE=${FLASK_APP_FILE:-main.py}
|
|
- NEW_UID
|
|
- NEW_GID
|
|
depends_on:
|
|
- bind
|
|
- httpd
|
|
|
|
|
|
###
|
|
### Volumes
|
|
###
|
|
volumes:
|
|
devilbox-rabbit:
|
|
devilbox-solr:
|
|
devilbox-elastic:
|
|
devilbox-logstash:
|