# 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 # ----------------------------------------------------------------------------------------------- # Meilisearch # ----------------------------------------------------------------------------------------------- meilisearch: image: getmeili/meilisearch:${MEILI_SERVER:-latest} hostname: meilisearch command: meilisearch environment: - MEILI_MASTER_KEY=${MEILI_MASTER_KEY-""} ports: - "${LOCAL_LISTEN_ADDR}${HOST_PORT_MEILI:-7700}:7700" networks: app_net: ipv4_address: 172.16.238.203 volumes: - devilbox-meilisearch:/meili_data depends_on: - bind - php - httpd ### ### Volumes ### volumes: devilbox-rabbit: devilbox-solr: devilbox-elastic: devilbox-logstash: devilbox-meilisearch: