blackbirdchess-docker-dev/docker-compose.yml
Mahmoud Zalt c00fe5d7e0 Merge branch 'multiple-projects-improvement'
* multiple-projects-improvement:
  updated env-example and removed .env.example
  complete missings
  Seperated mysqli and tokenizer as seperate options without putting them under code igniter
  Apache should just go to /var/www not /var/www/public when supporting multiple projects
  fixed example and docker-compose.yml
  Fixed php-fpm variables and example
  Split up mysqli and tokenizer
  Removed homestead entirely this time
  Removed homestead entirely this time
  Removed Homestead reference in all DB containers
  Removed reference to homestead
  Fixed timezone issue in docker-compose.yml
  Added NGINX from env file and updated env-example
  Updated PHP-FPM container to accept .env variables
  Added workspace from env file and updated env-example
  Removed .env file
  Added env-example and adjusted docker-compose yml to support new env file
  Updated gitignore
2017-03-16 16:10:28 -04:00

400 lines
11 KiB
YAML

version: '2'
services:
### Applications Code Container #############################
applications:
image: tianon/true
volumes:
- ${APPLICATIONS_HOST_DIR}:/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_LARAVEL_ENVOY}
- INSTALL_LINUXBREW=${WORKSPACE_INSTALL_LARAVEL_ENVOY}
- INSTALL_MC=${WORKSPACE_INSTALL_MC}
- PUID=${WORKSPACE_PUID}
- PGID=${WORKSPACE_PGID}
- NODE_VERSION=${WORKSPACE_NODE_VERSION}
- YARN_VERSION=${WORKSPACE_TIMEZONE}
- TZ=${WORKSPACE_TIMEZONE}
volumes_from:
- applications
extra_hosts:
- "dockerhost:${DOCKER_HOST_IP}"
ports:
- "${WORKSPACE_SSH_PORT}:22"
tty: true
### 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}
dockerfile: ${PHP_FPM_DOCKER_FILE}
volumes_from:
- applications
expose:
- "9000"
depends_on:
- workspace
extra_hosts:
- "dockerhost:${DOCKER_HOST_IP}"
environment:
- PHP_IDE_CONFIG=${PHP_IDE_CONFIG}
### 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
### Apache Server Container #################################
apache2:
build:
context: ./apache2
args:
- PHP_SOCKET=${PHP_SOCKET}
volumes_from:
- applications
volumes:
- ${APACHE_HOST_LOG_PATH}:/var/log/apache2
ports:
- "${APACHE_HOST_HTTP_PORT}:80"
- "${APACHE_HOST_HTTPS_PORT}:443"
depends_on:
- php-fpm
### HHVM Container ##########################################
hhvm:
build: ./hhvm
volumes_from:
- applications
expose:
- "9000"
depends_on:
- workspace
### Minio Container #########################################
minio:
build: ./minio
volumes:
- minio:/export
ports:
- "${MINIO_PORT}:9000"
environment:
MINIO_ACCESS_KEY: access
MINIO_SECRET_KEY: secretkey
### MySQL Container #########################################
mysql:
build:
context: ./mysql
args:
- 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"
### 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_PORT}
### 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}
### 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}
### Neo4j Container #########################################
neo4j:
build: ./neo4j
ports:
- "7474:7474"
- "1337:1337"
environment:
- NEO4J_AUTH=default:secret
volumes:
- neo4j:/var/lib/neo4j/data
### MongoDB Container #######################################
mongo:
build: ./mongo
ports:
- "27017:27017"
volumes:
- mongo:/data/db
### RethinkDB Container #######################################
rethinkdb:
build: ./rethinkdb
ports:
- "8090:8080"
volumes:
- rethinkdb:/data/rethinkdb_data
### Redis Container #########################################
redis:
build: ./redis
volumes:
- redis:/data
ports:
- "6379:6379"
### Aerospike c Container ###################################
aerospike:
build: ./aerospike
volumes_from:
- workspace
volumes:
- aerospike:/opt/aerospike/data
ports:
- "3000:3000"
- "3001:3001"
- "3002:3002"
- "3003:3003"
### Memcached Container #####################################
memcached:
build: ./memcached
volumes:
- memcached:/var/lib/memcached
ports:
- "${MEMCACHED_HOST_PORT}:11211"
depends_on:
- php-fpm
### Beanstalkd Container ####################################
beanstalkd:
build: ./beanstalkd
ports:
- "${BEANSTALKD_HOST_PORT}:11300"
privileged: true
depends_on:
- php-fpm
### 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
### Beanstalkd Console Container ############################
beanstalkd-console:
build: ./beanstalkd-console
ports:
- "2080:2080"
depends_on:
- beanstalkd
### 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
### 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}"
### pgAdmin Container #######################################
pgadmin:
build: ./pgadmin
ports:
- "5050:5050"
depends_on:
- postgres
### 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
### 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"
### Mailhog Container #########################################
mailhog:
build: ./mailhog
ports:
- "1025:1025"
- "8025:8025"
### Selenium Container #########################################
selenium:
build: ./selenium
ports:
- "${SELENIUM_PORT}:4444"
volumes:
- /dev/shm:/dev/shm
### Volumes Setup ###########################################
volumes:
mysql:
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"
aerospike:
driver: "local"
caddy:
driver: "local"
elasticsearch-data:
driver: "local"
elasticsearch-plugins:
driver: "local"