123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574 |
- version: '2'
- services:
- ### Applications Code Container #############################
- applications:
- image: tianon/true
- volumes:
- - ${APPLICATION}:/var/www
- ### Workspace Utilities Container ###########################
- workspace:
- build:
- context: ./workspace
- args:
- - INSTALL_XDEBUG=${WORKSPACE_INSTALL_XDEBUG}
- - INSTALL_SOAP=${WORKSPACE_INSTALL_SOAP}
- - INSTALL_MONGO=${WORKSPACE_INSTALL_MONGO}
- - INSTALL_NODE=${WORKSPACE_INSTALL_NODE}
- - INSTALL_YARN=${WORKSPACE_INSTALL_YARN}
- - INSTALL_DRUSH=${WORKSPACE_INSTALL_DRUSH}
- - INSTALL_AEROSPIKE_EXTENSION=${WORKSPACE_INSTALL_AEROSPIKE_EXTENSION}
- - INSTALL_V8JS_EXTENSION=${WORKSPACE_INSTALL_INSTALL_V8JS_EXTENSION}
- - COMPOSER_GLOBAL_INSTALL=${WORKSPACE_COMPOSER_GLOBAL_INSTALL}
- - INSTALL_WORKSPACE_SSH=${WORKSPACE_INSTALL_WORKSPACE_SSH}
- - INSTALL_LARAVEL_ENVOY=${WORKSPACE_INSTALL_LARAVEL_ENVOY}
- - INSTALL_DEPLOYER=${WORKSPACE_INSTALL_DEPLOYER}
- - INSTALL_LINUXBREW=${WORKSPACE_INSTALL_LINUXBREW}
- - INSTALL_MC=${WORKSPACE_INSTALL_MC}
- - PUID=${WORKSPACE_PUID}
- - PGID=${WORKSPACE_PGID}
- - NODE_VERSION=${WORKSPACE_NODE_VERSION}
- - YARN_VERSION=${WORKSPACE_YARN_VERSION}
- - TZ=${WORKSPACE_TIMEZONE}
- dockerfile: "Dockerfile-${PHP_VERSION}"
- volumes_from:
- - applications
- extra_hosts:
- - "dockerhost:${DOCKER_HOST_IP}"
- ports:
- - "${WORKSPACE_SSH_PORT}:22"
- tty: true
- networks:
- - frontend
- - backend
- ### PHP-FPM Container #######################################
- php-fpm:
- build:
- context: ./php-fpm
- args:
- - INSTALL_XDEBUG=${PHP_FPM_INSTALL_XDEBUG}
- - INSTALL_SOAP=${PHP_FPM_INSTALL_SOAP}
- - INSTALL_MONGO=${PHP_FPM_INSTALL_MONGO}
- - INSTALL_ZIP_ARCHIVE=${PHP_FPM_INSTALL_ZIP_ARCHIVE}
- - INSTALL_BCMATH=${PHP_FPM_INSTALL_BCMATH}
- - INSTALL_PHPREDIS=${PHP_FPM_INSTALL_PHPREDIS}
- - INSTALL_MEMCACHED=${PHP_FPM_INSTALL_MEMCACHED}
- - INSTALL_OPCACHE=${PHP_FPM_INSTALL_OPCACHE}
- - INSTALL_EXIF=${PHP_FPM_INSTALL_EXIF}
- - INSTALL_AEROSPIKE_EXTENSION=${PHP_FPM_INSTALL_AEROSPIKE_EXTENSION}
- - INSTALL_MYSQLI=${PHP_FPM_INSTALL_MYSQLI}
- - INSTALL_TOKENIZER=${PHP_FPM_INSTALL_TOKENIZER}
- - INSTALL_INTL=${PHP_FPM_INSTALL_INTL}
- - INSTALL_GHOSTSCRIPT=${PHP_FPM_INSTALL_GHOSTSCRIPT}
- dockerfile: "Dockerfile-${PHP_VERSION}"
- volumes_from:
- - applications
- expose:
- - "9000"
- depends_on:
- - workspace
- extra_hosts:
- - "dockerhost:${DOCKER_HOST_IP}"
- environment:
- - PHP_IDE_CONFIG=${PHP_IDE_CONFIG}
- networks:
- - backend
- ### PHP Worker Container #####################################
- php-worker:
- build:
- context: ./php-worker
- volumes_from:
- - applications
- depends_on:
- - workspace
- networks:
- - backend
- ### Nginx Server Container ##################################
- nginx:
- build:
- context: ./nginx
- args:
- - PHP_UPSTREAM=php-fpm
- volumes_from:
- - applications
- volumes:
- - ${NGINX_HOST_LOG_PATH}:/var/log/nginx
- - ${NGINX_SITES_PATH}:/etc/nginx/sites-available
- ports:
- - "${NGINX_HOST_HTTP_PORT}:80"
- - "${NGINX_HOST_HTTPS_PORT}:443"
- depends_on:
- - php-fpm
- networks:
- - frontend
- - backend
- ### Apache Server Container #################################
- apache2:
- build:
- context: ./apache2
- args:
- - PHP_SOCKET=${PHP_SOCKET}
- volumes_from:
- - applications
- volumes:
- - ${APACHE_HOST_LOG_PATH}:/var/log/apache2
- - ./apache2/sites:/etc/apache2/sites-available
- ports:
- - "${APACHE_HOST_HTTP_PORT}:80"
- - "${APACHE_HOST_HTTPS_PORT}:443"
- depends_on:
- - php-fpm
- networks:
- - frontend
- - backend
- ### HHVM Container ##########################################
- hhvm:
- build: ./hhvm
- volumes_from:
- - applications
- expose:
- - "9000"
- depends_on:
- - workspace
- networks:
- - frontend
- - backend
- ### Minio Container #########################################
- minio:
- build: ./minio
- volumes:
- - minio:/export
- ports:
- - "${MINIO_PORT}:9000"
- environment:
- - MINIO_ACCESS_KEY=access
- - MINIO_SECRET_KEY=secretkey
- networks:
- - frontend
- ### MySQL Container #########################################
- mysql:
- build:
- context: ./mysql
- environment:
- - MYSQL_DATABASE=${MYSQL_DATABASE}
- - MYSQL_USER=${MYSQL_USER}
- - MYSQL_PASSWORD=${MYSQL_PASSWORD}
- - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
- volumes:
- - mysql:/var/lib/mysql
- ports:
- - "${MYSQL_PORT}:3306"
- networks:
- - backend
- ### MSSQL Container #########################################
- mssql:
- build:
- context: ./mssql
- environment:
- - MSSQL_DATABASE=${MSSQL_DATABASE}
- - SA_PASSWORD=${MSSQL_PASSWORD}
- - ACCEPT_EULA=Y
- volumes:
- - mssql:/var/opt/mssql
- ports:
- - "${MSSQL_PORT}:1433"
- networks:
- - backend
- ### MariaDB Container #######################################
- mariadb:
- build: ./mariadb
- volumes:
- - mariadb:/var/lib/mysql
- ports:
- - "${MARIADB_PORT}:3306"
- environment:
- - MYSQL_DATABASE=${MARIADB_DATABASE}
- - MYSQL_USER=${MARIADB_USER}
- - MYSQL_PASSWORD=${MARIADB_PASSWORD}
- - MYSQL_ROOT_PASSWORD=${MARIADB_ROOT_PASSWORD}
- networks:
- - backend
- ### PostgreSQL Container ####################################
- postgres:
- build: ./postgres
- volumes:
- - postgres:/var/lib/postgresql/data
- ports:
- - "${POSTGRES_PORT}:5432"
- environment:
- - POSTGRES_DB=${POSTGRES_DB}
- - POSTGRES_USER=${POSTGRES_USER}
- - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- networks:
- - backend
- ### PostgreSQL PostGis Container ############################
- postgres-postgis:
- build: ./postgres-postgis
- volumes:
- - postgres:/var/lib/postgresql/data
- ports:
- - "${POSTGRES_PORT}:5432"
- environment:
- - POSTGRES_DB=${POSTGRES_DB}
- - POSTGRES_USER=${POSTGRES_USER}
- - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- networks:
- - backend
- ### Neo4j Container #########################################
- neo4j:
- build: ./neo4j
- ports:
- - "7474:7474"
- - "1337:1337"
- environment:
- - NEO4J_AUTH=default:secret
- volumes:
- - neo4j:/var/lib/neo4j/data
- networks:
- - backend
- ### MongoDB Container #######################################
- mongo:
- build: ./mongo
- ports:
- - "27017:27017"
- volumes:
- - mongo:/data/db
- networks:
- - backend
- ### RethinkDB Container #######################################
- rethinkdb:
- build: ./rethinkdb
- ports:
- - "8090:8080"
- volumes:
- - rethinkdb:/data/rethinkdb_data
- networks:
- - backend
- ### Redis Container #########################################
- redis:
- build: ./redis
- volumes:
- - redis:/data
- ports:
- - "6379:6379"
- networks:
- - backend
- ### Aerospike c Container ###################################
- aerospike:
- build: ./aerospike
- volumes_from:
- - workspace
- volumes:
- - aerospike:/opt/aerospike/data
- ports:
- - "3000:3000"
- - "3001:3001"
- - "3002:3002"
- - "3003:3003"
- networks:
- - backend
- ### Memcached Container #####################################
- memcached:
- build: ./memcached
- volumes:
- - memcached:/var/lib/memcached
- ports:
- - "${MEMCACHED_HOST_PORT}:11211"
- depends_on:
- - php-fpm
- networks:
- - backend
- ### Beanstalkd Container ####################################
- beanstalkd:
- build: ./beanstalkd
- ports:
- - "${BEANSTALKD_HOST_PORT}:11300"
- privileged: true
- depends_on:
- - php-fpm
- networks:
- - backend
- ### RabbitMQ Container ######################################
- rabbitmq:
- build: ./rabbitmq
- ports:
- - "${RABBITMQ_NODE_HOST_PORT}:5672"
- - "${RABBITMQ_MANAGEMENT_HTTP_HOST_PORT}:15672"
- - "${RABBITMQ_MANAGEMENT_HTTPS_HOST_PORT}:15671"
- privileged: true
- environment:
- - RABBITMQ_DEFAULT_USER=${RABBITMQ_DEFAULT_USER}
- - RABBITMQ_DEFAULT_PASS=${RABBITMQ_DEFAULT_PASS}
- depends_on:
- - php-fpm
- networks:
- - backend
- ### Beanstalkd Console Container ############################
- beanstalkd-console:
- build: ./beanstalkd-console
- ports:
- - "2080:2080"
- depends_on:
- - beanstalkd
- networks:
- - backend
- ### Caddy Server Container ##################################
- caddy:
- build: ./caddy
- ports:
- - "80:80"
- - "443:443"
- - "2015:2015"
- volumes_from:
- - applications
- volumes:
- - ./caddy/Caddyfile:/etc/Caddyfile
- - ./logs/caddy:/var/log/caddy
- - caddy:/root/.caddy
- depends_on:
- - php-fpm
- networks:
- - frontend
- - backend
- ### phpMyAdmin Container ####################################
- phpmyadmin:
- build: ./phpmyadmin
- environment:
- - PMA_ARBITRARY=1
- - MYSQL_USER=${PMA_USER}
- - MYSQL_PASSWORD=${PMA_PASSWORD}
- - MYSQL_ROOT_PASSWORD=${PMA_ROOT_PASSWORD}
- ports:
- - "${PMA_PORT}:80"
- depends_on:
- - "${PMA_DB_ENGINE}"
- networks:
- - frontend
- - backend
- ### Adminer Container ####################################
- adminer:
- build: ./adminer
- ports:
- - "${ADM_PORT}:8080"
- depends_on:
- - php-fpm
- networks:
- - frontend
- ### pgAdmin Container #######################################
- pgadmin:
- build: ./pgadmin
- ports:
- - "5050:5050"
- depends_on:
- - postgres
- networks:
- - frontend
- ### ElasticSearch Container #################################
- elasticsearch:
- build: ./elasticsearch
- volumes:
- - elasticsearch-data:/usr/share/elasticsearch/data
- - elasticsearch-plugins:/usr/share/elasticsearch/plugins
- ports:
- - "${ELASTICSEARCH_HOST_HTTP_PORT}:9200"
- - "${ELASTICSEARCH_HOST_TRANSPORT_PORT}:9300"
- depends_on:
- - php-fpm
- networks:
- - frontend
- ### Certbot Container ##################################
- certbot:
- build:
- context: ./certbot
- volumes:
- - ./data/certbot/certs/:/var/certs
- - ./certbot/letsencrypt/:/var/www/letsencrypt
- environment:
- - CN="fake.domain.com"
- - EMAIL="fake.email@gmail.com"
- networks:
- - frontend
- ### Mailhog Container #########################################
- mailhog:
- build: ./mailhog
- ports:
- - "1025:1025"
- - "8025:8025"
- networks:
- - frontend
- ### Selenium Container ########################################
- selenium:
- build: ./selenium
- ports:
- - "${SELENIUM_PORT}:4444"
- volumes:
- - /dev/shm:/dev/shm
- networks:
- - frontend
- ### Varnish Proxy 1 ##########################################
- proxy:
- build: ./varnish
- expose:
- - ${VARNISH_PORT}
- environment:
- - VARNISH_CONFIG=${VARNISH_CONFIG}
- - CACHE_SIZE=${VARNISH_PROXY1_CACHE_SIZE}
- - VARNISHD_PARAMS=${VARNISHD_PARAMS}
- - VARNISH_PORT=${VARNISH_PORT}
- - BACKEND_HOST=${VARNISH_PROXY1_BACKEND_HOST}
- - BACKEND_PORT=${VARNISH_BACKEND_PORT}
- - VARNISH_SERVER=${VARNISH_PROXY1_SERVER}
- links:
- - workspace
- networks:
- - frontend
- ### Varnish Proxy 2 ##########################################
- proxy2:
- build: ./varnish
- expose:
- - ${VARNISH_PORT}
- environment:
- - VARNISH_CONFIG=${VARNISH_CONFIG}
- - CACHE_SIZE=${VARNISH_PROXY2_CACHE_SIZE}
- - VARNISHD_PARAMS=${VARNISHD_PARAMS}
- - VARNISH_PORT=${VARNISH_PORT}
- - BACKEND_HOST=${VARNISH_PROXY2_BACKEND_HOST}
- - BACKEND_PORT=${VARNISH_BACKEND_PORT}
- - VARNISH_SERVER=${VARNISH_PROXY2_SERVER}
- links:
- - workspace
- networks:
- - frontend
- ### Balancer Haproxy ##########################################
- balancer:
- build: ./haproxy
- ports:
- - "${HAPROXY_HOST_HTTP_PORT}:8085"
- volumes:
- - /var/run/docker.sock:/var/run/docker.sock
- links:
- - proxy
- - proxy2
- ### Jenkins ###################################################
- jenkins:
- build: ./jenkins
- environment:
- JAVA_OPTS: "-Djava.awt.headless=true"
- ports:
- - "${JENKINS_HOST_SLAVE_AGENT_PORT}:50000"
- - "${JENKINS_HOST_HTTP_PORT}:8080"
- privileged: true
- volumes:
- - ${JENKINS_HOME}:/var/jenkins_home
- - /var/run/docker.sock:/var/run/docker.sock
- ### Networks Setup ############################################
- networks:
- frontend:
- driver: "bridge"
- backend:
- driver: "bridge"
- ### Volumes Setup #############################################
- volumes:
- mysql:
- driver: "local"
- mssql:
- driver: "local"
- postgres:
- driver: "local"
- memcached:
- driver: "local"
- redis:
- driver: "local"
- neo4j:
- driver: "local"
- mariadb:
- driver: "local"
- mongo:
- driver: "local"
- minio:
- driver: "local"
- rethinkdb:
- driver: "local"
- phpmyadmin:
- driver: "local"
- adminer:
- driver: "local"
- aerospike:
- driver: "local"
- caddy:
- driver: "local"
- elasticsearch-data:
- driver: "local"
- elasticsearch-plugins:
- driver: "local"
|