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} - PUID=${WORKSPACE_PUID} - PGID=${WORKSPACE_PGID} - NODE_VERSION=${WORKSPACE_NODE_VERSION} - YARN_VERSION=${WORKSPACE_TIMEZONE} - TZ=${WORKSPACE_TIMEZONE} volumes_from: - applications extra_hosts: # IMPORTANT: Replace with your Docker Host IP (will be appended to /etc/hosts) - "dockerhost:10.0.75.1" ports: - "2222: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" links: - workspace extra_hosts: # IMPORTANT: Replace with your Docker Host IP (will be appended to /etc/hosts) - "dockerhost:10.0.75.1" environment: # IMPORTANT: Set the Remote Interpreter entry matching name to `laravel` - PHP_IDE_CONFIG=serverName=laravel ### 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: - "80:80" - "443:443" links: - php-fpm ### Apache Server Container ################################# apache2: build: context: ./apache2 args: - PHP_SOCKET=php-fpm:9000 volumes_from: - applications volumes: - ./logs/apache2:/var/log/apache2 ports: - "80:80" - "443:443" links: - php-fpm ### HHVM Container ########################################## hhvm: build: ./hhvm volumes_from: - applications expose: - "9000" links: - workspace ### Minio Container ######################################### minio: build: ./minio volumes: - minio:/export ports: - "9000:9000" environment: MINIO_ACCESS_KEY: access MINIO_SECRET_KEY: secretkey ### MySQL Container ######################################### mysql: build: context: ./mysql args: - MYSQL_DATABASE=default - MYSQL_USER=default - MYSQL_PASSWORD=secret - MYSQL_ROOT_PASSWORD=root volumes: - mysql:/var/lib/mysql ports: - "3306:3306" ### MariaDB Container ####################################### mariadb: build: ./mariadb volumes: - mariadb:/var/lib/mysql ports: - "3306:3306" environment: MYSQL_DATABASE: default MYSQL_USER: default MYSQL_PASSWORD: secret MYSQL_ROOT_PASSWORD: root ### PostgreSQL Container #################################### postgres: build: ./postgres volumes: - postgres:/var/lib/postgresql/data ports: - "5432:5432" environment: POSTGRES_DB: default POSTGRES_USER: default POSTGRES_PASSWORD: secret ### PostgreSQL PostGis Container ############################ postgres-postgis: build: ./postgres-postgis volumes: - postgres:/var/lib/postgresql/data ports: - "5432:5432" environment: POSTGRES_DB: default POSTGRES_USER: default POSTGRES_PASSWORD: secret ### 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: - "11211:11211" links: - php-fpm ### Beanstalkd Container #################################### beanstalkd: build: ./beanstalkd ports: - "11300:11300" privileged: true links: - php-fpm ### RabbitMQ Container ###################################### rabbitmq: build: ./rabbitmq ports: - "5672:5672" - "15671:15671" - "8080:15672" privileged: true environment: RABBITMQ_DEFAULT_USER: guest RABBITMQ_DEFAULT_PASS: guest links: - php-fpm ### Beanstalkd Console Container ############################ beanstalkd-console: build: ./beanstalkd-console ports: - "2080:2080" links: - 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 links: - php-fpm ### phpMyAdmin Container #################################### phpmyadmin: build: ./phpmyadmin environment: PMA_ARBITRARY: 1 MYSQL_USER: default MYSQL_PASSWORD: secret MYSQL_ROOT_PASSWORD: root ports: - "8080:80" links: # for mysql container - "mysql:db" # for mariadb container # - "mariadb:db" ### pgAdmin Container ####################################### pgadmin: build: ./pgadmin ports: - "5050:5050" links: - postgres ### ElasticSearch Container ################################# elasticsearch: build: ./elasticsearch volumes: - elasticsearch-data:/usr/share/elasticsearch/data - elasticsearch-plugins:/usr/share/elasticsearch/data ports: - "9200:9200" - "9300:9300" links: - php-fpm ### Selenium Container ######################################### selenium: build: ./selenium ports: - "4444:4444" volumes: # see https://github.com/SeleniumHQ/docker-selenium#running-the-images - /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" sessions: ## nothing is connected to this (- ./data/sessions:/sessions) driver: "local"