Created
May 24, 2017 22:45
-
-
Save benbabics/75cc123a2c2b1df711239be2c905409f to your computer and use it in GitHub Desktop.
sherpa docker-compose setup
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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_BLACKFIRE=${INSTALL_BLACKFIRE} | |
- INSTALL_SOAP=${WORKSPACE_INSTALL_SOAP} | |
- INSTALL_MONGO=${WORKSPACE_INSTALL_MONGO} | |
- INSTALL_MSSQL=${WORKSPACE_INSTALL_MSSQL} | |
- INSTALL_NODE=${WORKSPACE_INSTALL_NODE} | |
- INSTALL_YARN=${WORKSPACE_INSTALL_YARN} | |
- INSTALL_DRUSH=${WORKSPACE_INSTALL_DRUSH} | |
- INSTALL_AEROSPIKE=${WORKSPACE_INSTALL_AEROSPIKE} | |
- INSTALL_V8JS=${WORKSPACE_INSTALL_V8JS} | |
- 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} | |
- BLACKFIRE_CLIENT_ID=${BLACKFIRE_CLIENT_ID} | |
- BLACKFIRE_CLIENT_TOKEN=${BLACKFIRE_CLIENT_TOKEN} | |
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_BLACKFIRE=${INSTALL_BLACKFIRE} | |
- INSTALL_SOAP=${PHP_FPM_INSTALL_SOAP} | |
- INSTALL_MONGO=${PHP_FPM_INSTALL_MONGO} | |
- INSTALL_MSSQL=${PHP_FPM_INSTALL_MSSQL} | |
- 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=${PHP_FPM_INSTALL_AEROSPIKE} | |
- INSTALL_MYSQLI=${PHP_FPM_INSTALL_MYSQLI} | |
- INSTALL_TOKENIZER=${PHP_FPM_INSTALL_TOKENIZER} | |
- INSTALL_INTL=${PHP_FPM_INSTALL_INTL} | |
- INSTALL_GHOSTSCRIPT=${PHP_FPM_INSTALL_GHOSTSCRIPT} | |
- INSTALL_LDAP=${PHP_FPM_INSTALL_LDAP} | |
- INSTALL_SWOOLE=${PHP_FPM_INSTALL_SWOOLE} | |
dockerfile: "Dockerfile-${PHP_VERSION}" | |
volumes_from: | |
- applications | |
volumes: | |
- ./php-fpm/php${PHP_VERSION}.ini:/usr/local/etc/php/php.ini | |
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 | |
extra_hosts: | |
- "dockerhost:${DOCKER_HOST_IP}" | |
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 | |
### Blackfire Container ################################# | |
blackfire: | |
image: blackfire/blackfire | |
environment: | |
- BLACKFIRE_SERVER_ID=${BLACKFIRE_SERVER_ID} | |
- BLACKFIRE_SERVER_TOKEN=${BLACKFIRE_SERVER_TOKEN} | |
depends_on: | |
- php-fpm | |
networks: | |
- 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: | |
- ${DATA_SAVE_PATH}/mysql:/var/lib/mysql | |
- ./mysql/docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d | |
ports: | |
- "${MYSQL_PORT}:3306" | |
networks: | |
- backend | |
### Percona Container ######################################### | |
percona: | |
build: | |
context: ./percona | |
environment: | |
- MYSQL_DATABASE=${PERCONA_DATABASE} | |
- MYSQL_USER=${PERCONA_USER} | |
- MYSQL_PASSWORD=${PERCONA_PASSWORD} | |
- MYSQL_ROOT_PASSWORD=${PERCONA_ROOT_PASSWORD} | |
volumes: | |
- ${DATA_SAVE_PATH}/percona:/var/lib/mysql | |
- ./percona/docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d | |
ports: | |
- "${PERCONA_PORT}:3306" | |
networks: | |
- backend | |
### MSSQL Container ######################################### | |
mssql: | |
build: | |
context: ./mssql | |
environment: | |
- MSSQL_DATABASE=${MSSQL_DATABASE} | |
- SA_PASSWORD=${MSSQL_PASSWORD} | |
- ACCEPT_EULA=Y | |
volumes: | |
- ${DATA_SAVE_PATH}/mssql:/var/opt/mssql | |
ports: | |
- "${MSSQL_PORT}:1433" | |
networks: | |
- backend | |
### MariaDB Container ####################################### | |
mariadb: | |
build: ./mariadb | |
volumes: | |
- ${DATA_SAVE_PATH}/mariadb:/var/lib/mysql | |
- ./mariadb/docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d | |
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: | |
- ${DATA_SAVE_PATH}/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: | |
- ${DATA_SAVE_PATH}/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: | |
- ${DATA_SAVE_PATH}/neo4j:/var/lib/neo4j/data | |
networks: | |
- backend | |
### MongoDB Container ####################################### | |
mongo: | |
build: ./mongo | |
ports: | |
- "${MONGODB_PORT}:27017" | |
volumes: | |
- ${DATA_SAVE_PATH}/mongo:/data/db | |
networks: | |
- backend | |
### RethinkDB Container ####################################### | |
rethinkdb: | |
build: ./rethinkdb | |
ports: | |
- "${RETHINKDB_PORT}:8080" | |
volumes: | |
- ${DATA_SAVE_PATH}/rethinkdb:/data/rethinkdb_data | |
networks: | |
- backend | |
### Redis Container ######################################### | |
redis: | |
build: ./redis | |
volumes: | |
- ${DATA_SAVE_PATH}/redis:/data | |
ports: | |
- "6379:6379" | |
networks: | |
- backend | |
### Aerospike c Container ################################### | |
aerospike: | |
build: ./aerospike | |
volumes_from: | |
- workspace | |
volumes: | |
- ${DATA_SAVE_PATH}/aerospike:/opt/aerospike/data | |
ports: | |
- "${AEROSPIKE_SERVICE_PORT}:3000" | |
- "${AEROSPIKE_FABRIC_PORT}:3001" | |
- "${AEROSPIKE_HEARTBEAT_PORT}:3002" | |
- "${AEROSPIKE_INFO_PORT}:3003" | |
networks: | |
- backend | |
### Memcached Container ##################################### | |
memcached: | |
build: ./memcached | |
volumes: | |
- ${DATA_SAVE_PATH}/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 | |
volumes_from: | |
- applications | |
volumes: | |
- ${CADDY_CUSTOM_CADDYFILE}:/etc/Caddyfile | |
- ${CADDY_HOST_LOG_PATH}:/var/log/caddy | |
- ${DATA_SAVE_PATH}:/root/.caddy | |
ports: | |
- "${CADDY_HOST_HTTP_PORT}:80" | |
- "${CADDY_HOST_HTTPS_PORT}:443" | |
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 | |
- backend | |
### pgAdmin Container ####################################### | |
pgadmin: | |
build: ./pgadmin | |
ports: | |
- "5050:5050" | |
depends_on: | |
- postgres | |
networks: | |
- frontend | |
- backend | |
### 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 | |
- backend | |
### Certbot Container ################################## | |
certbot: | |
build: | |
context: ./certbot | |
volumes: | |
- ./data/certbot/certs/:/var/certs | |
- ./certbot/letsencrypt/:/var/www/letsencrypt | |
environment: | |
- CN="fake.domain.com" | |
- EMAIL="[email protected]" | |
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: | |
- frontend | |
- backend | |
### Networks Setup ############################################ | |
networks: | |
frontend: | |
driver: "bridge" | |
backend: | |
driver: "bridge" | |
### Volumes Setup ############################################# | |
volumes: | |
mysql: | |
driver: "local" | |
percona: | |
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" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment