docker-compose.yml 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751
  1. version: '2'
  2. services:
  3. ### Applications Code Container #############################
  4. applications:
  5. image: tianon/true
  6. ### Workspace Utilities Container ###########################
  7. workspace:
  8. build:
  9. context: ./workspace
  10. args:
  11. - INSTALL_XDEBUG=${WORKSPACE_INSTALL_XDEBUG}
  12. - INSTALL_BLACKFIRE=${INSTALL_BLACKFIRE}
  13. - INSTALL_SOAP=${WORKSPACE_INSTALL_SOAP}
  14. - INSTALL_LDAP=${WORKSPACE_INSTALL_LDAP}
  15. - INSTALL_IMAP=${WORKSPACE_INSTALL_IMAP}
  16. - INSTALL_MONGO=${WORKSPACE_INSTALL_MONGO}
  17. - INSTALL_AMQP=${WORKSPACE_INSTALL_AMQP}
  18. - INSTALL_PHPREDIS=${WORKSPACE_INSTALL_PHPREDIS}
  19. - INSTALL_MSSQL=${WORKSPACE_INSTALL_MSSQL}
  20. - INSTALL_NODE=${WORKSPACE_INSTALL_NODE}
  21. - NPM_REGISTRY=${WORKSPACE_NPM_REGISTRY}
  22. - INSTALL_YARN=${WORKSPACE_INSTALL_YARN}
  23. - INSTALL_DRUSH=${WORKSPACE_INSTALL_DRUSH}
  24. - INSTALL_DRUPAL_CONSOLE=${WORKSPACE_INSTALL_DRUPAL_CONSOLE}
  25. - INSTALL_AEROSPIKE=${WORKSPACE_INSTALL_AEROSPIKE}
  26. - INSTALL_V8JS=${WORKSPACE_INSTALL_V8JS}
  27. - COMPOSER_GLOBAL_INSTALL=${WORKSPACE_COMPOSER_GLOBAL_INSTALL}
  28. - COMPOSER_REPO_PACKAGIST=${WORKSPACE_COMPOSER_REPO_PACKAGIST}
  29. - INSTALL_WORKSPACE_SSH=${WORKSPACE_INSTALL_WORKSPACE_SSH}
  30. - INSTALL_LARAVEL_ENVOY=${WORKSPACE_INSTALL_LARAVEL_ENVOY}
  31. - INSTALL_LARAVEL_INSTALLER=${WORKSPACE_INSTALL_LARAVEL_INSTALLER}
  32. - INSTALL_DEPLOYER=${WORKSPACE_INSTALL_DEPLOYER}
  33. - INSTALL_PRESTISSIMO=${WORKSPACE_INSTALL_PRESTISSIMO}
  34. - INSTALL_LINUXBREW=${WORKSPACE_INSTALL_LINUXBREW}
  35. - INSTALL_MC=${WORKSPACE_INSTALL_MC}
  36. - INSTALL_SYMFONY=${WORKSPACE_INSTALL_SYMFONY}
  37. - INSTALL_PYTHON=${WORKSPACE_INSTALL_PYTHON}
  38. - INSTALL_IMAGE_OPTIMIZERS=${WORKSPACE_INSTALL_IMAGE_OPTIMIZERS}
  39. - INSTALL_IMAGEMAGICK=${WORKSPACE_INSTALL_IMAGEMAGICK}
  40. - INSTALL_TERRAFORM=${WORKSPACE_INSTALL_TERRAFORM}
  41. - INSTALL_DUSK_DEPS=${WORKSPACE_INSTALL_DUSK_DEPS}
  42. - INSTALL_PG_CLIENT=${WORKSPACE_INSTALL_PG_CLIENT}
  43. - INSTALL_SWOOLE=${WORKSPACE_INSTALL_SWOOLE}
  44. - PUID=${WORKSPACE_PUID}
  45. - PGID=${WORKSPACE_PGID}
  46. - CHROME_DRIVER_VERSION=${WORKSPACE_CHROME_DRIVER_VERSION}
  47. - NODE_VERSION=${WORKSPACE_NODE_VERSION}
  48. - YARN_VERSION=${WORKSPACE_YARN_VERSION}
  49. - TZ=${WORKSPACE_TIMEZONE}
  50. - BLACKFIRE_CLIENT_ID=${BLACKFIRE_CLIENT_ID}
  51. - BLACKFIRE_CLIENT_TOKEN=${BLACKFIRE_CLIENT_TOKEN}
  52. dockerfile: "Dockerfile-${PHP_VERSION}"
  53. volumes_from:
  54. - applications
  55. extra_hosts:
  56. - "dockerhost:${DOCKER_HOST_IP}"
  57. ports:
  58. - "${WORKSPACE_SSH_PORT}:22"
  59. tty: true
  60. networks:
  61. - frontend
  62. - backend
  63. ### PHP-FPM Container #######################################
  64. php-fpm:
  65. build:
  66. context: ./php-fpm
  67. args:
  68. - INSTALL_XDEBUG=${PHP_FPM_INSTALL_XDEBUG}
  69. - INSTALL_BLACKFIRE=${INSTALL_BLACKFIRE}
  70. - INSTALL_SOAP=${PHP_FPM_INSTALL_SOAP}
  71. - INSTALL_IMAP=${PHP_FPM_INSTALL_IMAP}
  72. - INSTALL_MONGO=${PHP_FPM_INSTALL_MONGO}
  73. - INSTALL_AMQP=${PHP_FPM_INSTALL_AMQP}
  74. - INSTALL_MSSQL=${PHP_FPM_INSTALL_MSSQL}
  75. - INSTALL_ZIP_ARCHIVE=${PHP_FPM_INSTALL_ZIP_ARCHIVE}
  76. - INSTALL_BCMATH=${PHP_FPM_INSTALL_BCMATH}
  77. - INSTALL_GMP=${PHP_FPM_INSTALL_GMP}
  78. - INSTALL_PHPREDIS=${PHP_FPM_INSTALL_PHPREDIS}
  79. - INSTALL_MEMCACHED=${PHP_FPM_INSTALL_MEMCACHED}
  80. - INSTALL_OPCACHE=${PHP_FPM_INSTALL_OPCACHE}
  81. - INSTALL_EXIF=${PHP_FPM_INSTALL_EXIF}
  82. - INSTALL_AEROSPIKE=${PHP_FPM_INSTALL_AEROSPIKE}
  83. - INSTALL_MYSQLI=${PHP_FPM_INSTALL_MYSQLI}
  84. - INSTALL_PGSQL=${PHP_FPM_INSTALL_PGSQL}
  85. - INSTALL_PG_CLIENT=${PHP_FPM_INSTALL_PG_CLIENT}
  86. - INSTALL_TOKENIZER=${PHP_FPM_INSTALL_TOKENIZER}
  87. - INSTALL_INTL=${PHP_FPM_INSTALL_INTL}
  88. - INSTALL_GHOSTSCRIPT=${PHP_FPM_INSTALL_GHOSTSCRIPT}
  89. - INSTALL_LDAP=${PHP_FPM_INSTALL_LDAP}
  90. - INSTALL_SWOOLE=${PHP_FPM_INSTALL_SWOOLE}
  91. - INSTALL_IMAGE_OPTIMIZERS=${PHP_FPM_INSTALL_IMAGE_OPTIMIZERS}
  92. - INSTALL_IMAGEMAGICK=${PHP_FPM_INSTALL_IMAGEMAGICK}
  93. dockerfile: "Dockerfile-${PHP_VERSION}"
  94. volumes_from:
  95. - applications
  96. volumes:
  97. - ./php-fpm/php${PHP_VERSION}.ini:/usr/local/etc/php/php.ini
  98. expose:
  99. - "9000"
  100. depends_on:
  101. - workspace
  102. extra_hosts:
  103. - "dockerhost:${DOCKER_HOST_IP}"
  104. environment:
  105. - PHP_IDE_CONFIG=${PHP_IDE_CONFIG}
  106. networks:
  107. - backend
  108. ### PHP Worker Container #####################################
  109. php-worker:
  110. build:
  111. context: ./php-worker
  112. dockerfile: "Dockerfile-${PHP_VERSION}"
  113. args:
  114. - INSTALL_PGSQL=${PHP_WORKER_INSTALL_PGSQL}
  115. volumes_from:
  116. - applications
  117. depends_on:
  118. - workspace
  119. extra_hosts:
  120. - "dockerhost:${DOCKER_HOST_IP}"
  121. networks:
  122. - backend
  123. ### NGINX Server Container ##################################
  124. nginx:
  125. build:
  126. context: ./nginx
  127. args:
  128. - PHP_UPSTREAM_CONTAINER=${NGINX_PHP_UPSTREAM_CONTAINER}
  129. - PHP_UPSTREAM_PORT=${NGINX_PHP_UPSTREAM_PORT}
  130. volumes_from:
  131. - applications
  132. volumes:
  133. - ${NGINX_HOST_LOG_PATH}:/var/log/nginx
  134. - ${NGINX_SITES_PATH}:/etc/nginx/sites-available
  135. ports:
  136. - "${NGINX_HOST_HTTP_PORT}:80"
  137. - "${NGINX_HOST_HTTPS_PORT}:443"
  138. depends_on:
  139. - php-fpm
  140. networks:
  141. - frontend
  142. - backend
  143. ### Blackfire Container #################################
  144. blackfire:
  145. image: blackfire/blackfire
  146. environment:
  147. - BLACKFIRE_SERVER_ID=${BLACKFIRE_SERVER_ID}
  148. - BLACKFIRE_SERVER_TOKEN=${BLACKFIRE_SERVER_TOKEN}
  149. depends_on:
  150. - php-fpm
  151. networks:
  152. - backend
  153. ### Apache Server Container #################################
  154. apache2:
  155. build:
  156. context: ./apache2
  157. args:
  158. - PHP_UPSTREAM_CONTAINER=${APACHE_PHP_UPSTREAM_CONTAINER}
  159. - PHP_UPSTREAM_PORT=${APACHE_PHP_UPSTREAM_PORT}
  160. - PHP_UPSTREAM_TIMEOUT=${APACHE_PHP_UPSTREAM_TIMEOUT}
  161. volumes_from:
  162. - applications
  163. volumes:
  164. - ${APACHE_HOST_LOG_PATH}:/var/log/apache2
  165. - ${APACHE_SITES_PATH}:/etc/apache2/sites-available
  166. ports:
  167. - "${APACHE_HOST_HTTP_PORT}:80"
  168. - "${APACHE_HOST_HTTPS_PORT}:443"
  169. depends_on:
  170. - php-fpm
  171. networks:
  172. - frontend
  173. - backend
  174. ### HHVM Container ##########################################
  175. hhvm:
  176. build: ./hhvm
  177. volumes_from:
  178. - applications
  179. expose:
  180. - "9000"
  181. depends_on:
  182. - workspace
  183. networks:
  184. - frontend
  185. - backend
  186. ### Minio Container #########################################
  187. minio:
  188. build: ./minio
  189. volumes:
  190. - ${DATA_SAVE_PATH}/minio/data:/export
  191. - ${DATA_SAVE_PATH}/minio/config:/root/.minio
  192. ports:
  193. - "${MINIO_PORT}:9000"
  194. environment:
  195. - MINIO_ACCESS_KEY=access
  196. - MINIO_SECRET_KEY=secretkey
  197. networks:
  198. - frontend
  199. - backend
  200. ### MySQL Container #########################################
  201. mysql:
  202. build:
  203. context: ./mysql
  204. args:
  205. - MYSQL_VERSION=${MYSQL_VERSION}
  206. environment:
  207. - MYSQL_DATABASE=${MYSQL_DATABASE}
  208. - MYSQL_USER=${MYSQL_USER}
  209. - MYSQL_PASSWORD=${MYSQL_PASSWORD}
  210. - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
  211. - TZ=${WORKSPACE_TIMEZONE}
  212. volumes:
  213. - ${DATA_SAVE_PATH}/mysql:/var/lib/mysql
  214. - ${MYSQL_ENTRYPOINT_INITDB}:/docker-entrypoint-initdb.d
  215. ports:
  216. - "${MYSQL_PORT}:3306"
  217. networks:
  218. - backend
  219. ### Percona Container #########################################
  220. percona:
  221. build:
  222. context: ./percona
  223. environment:
  224. - MYSQL_DATABASE=${PERCONA_DATABASE}
  225. - MYSQL_USER=${PERCONA_USER}
  226. - MYSQL_PASSWORD=${PERCONA_PASSWORD}
  227. - MYSQL_ROOT_PASSWORD=${PERCONA_ROOT_PASSWORD}
  228. volumes:
  229. - ${DATA_SAVE_PATH}/percona:/var/lib/mysql
  230. - ${PERCONA_ENTRYPOINT_INITDB}:/docker-entrypoint-initdb.d
  231. ports:
  232. - "${PERCONA_PORT}:3306"
  233. networks:
  234. - backend
  235. ### MSSQL Container #########################################
  236. mssql:
  237. build:
  238. context: ./mssql
  239. environment:
  240. - MSSQL_DATABASE=${MSSQL_DATABASE}
  241. - SA_PASSWORD=${MSSQL_PASSWORD}
  242. - ACCEPT_EULA=Y
  243. volumes:
  244. - ${DATA_SAVE_PATH}/mssql:/var/opt/mssql
  245. ports:
  246. - "${MSSQL_PORT}:1433"
  247. networks:
  248. - backend
  249. ### MariaDB Container #######################################
  250. mariadb:
  251. build: ./mariadb
  252. volumes:
  253. - ${DATA_SAVE_PATH}/mariadb:/var/lib/mysql
  254. - ${MARIADB_ENTRYPOINT_INITDB}:/docker-entrypoint-initdb.d
  255. ports:
  256. - "${MARIADB_PORT}:3306"
  257. environment:
  258. - MYSQL_DATABASE=${MARIADB_DATABASE}
  259. - MYSQL_USER=${MARIADB_USER}
  260. - MYSQL_PASSWORD=${MARIADB_PASSWORD}
  261. - MYSQL_ROOT_PASSWORD=${MARIADB_ROOT_PASSWORD}
  262. networks:
  263. - backend
  264. ### PostgreSQL Container ####################################
  265. postgres:
  266. build: ./postgres
  267. volumes:
  268. - ${DATA_SAVE_PATH}/postgres:/var/lib/postgresql
  269. ports:
  270. - "${POSTGRES_PORT}:5432"
  271. environment:
  272. - POSTGRES_DB=${POSTGRES_DB}
  273. - POSTGRES_USER=${POSTGRES_USER}
  274. - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
  275. networks:
  276. - backend
  277. ### PostgreSQL PostGis Container ############################
  278. postgres-postgis:
  279. build: ./postgres-postgis
  280. volumes:
  281. - ${DATA_SAVE_PATH}/postgres:/var/lib/postgresql/data
  282. ports:
  283. - "${POSTGRES_PORT}:5432"
  284. environment:
  285. - POSTGRES_DB=${POSTGRES_DB}
  286. - POSTGRES_USER=${POSTGRES_USER}
  287. - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
  288. networks:
  289. - backend
  290. ### Neo4j Container #########################################
  291. neo4j:
  292. build: ./neo4j
  293. ports:
  294. - "7474:7474"
  295. - "1337:1337"
  296. environment:
  297. - NEO4J_AUTH=default:secret
  298. volumes:
  299. - ${DATA_SAVE_PATH}/neo4j:/var/lib/neo4j/data
  300. networks:
  301. - backend
  302. ### MongoDB Container #######################################
  303. mongo:
  304. build: ./mongo
  305. ports:
  306. - "${MONGODB_PORT}:27017"
  307. volumes:
  308. - ${DATA_SAVE_PATH}/mongo:/data/db
  309. networks:
  310. - backend
  311. ### RethinkDB Container #######################################
  312. rethinkdb:
  313. build: ./rethinkdb
  314. ports:
  315. - "${RETHINKDB_PORT}:8080"
  316. volumes:
  317. - ${DATA_SAVE_PATH}/rethinkdb:/data/rethinkdb_data
  318. networks:
  319. - backend
  320. ### Redis Container #########################################
  321. redis:
  322. build: ./redis
  323. volumes:
  324. - ${DATA_SAVE_PATH}/redis:/data
  325. ports:
  326. - "${REDIS_PORT}:6379"
  327. networks:
  328. - backend
  329. ### Aerospike c Container ###################################
  330. aerospike:
  331. build: ./aerospike
  332. volumes_from:
  333. - workspace
  334. volumes:
  335. - ${DATA_SAVE_PATH}/aerospike:/opt/aerospike/data
  336. ports:
  337. - "${AEROSPIKE_SERVICE_PORT}:3000"
  338. - "${AEROSPIKE_FABRIC_PORT}:3001"
  339. - "${AEROSPIKE_HEARTBEAT_PORT}:3002"
  340. - "${AEROSPIKE_INFO_PORT}:3003"
  341. networks:
  342. - backend
  343. ### Memcached Container #####################################
  344. memcached:
  345. build: ./memcached
  346. volumes:
  347. - ${DATA_SAVE_PATH}/memcached:/var/lib/memcached
  348. ports:
  349. - "${MEMCACHED_HOST_PORT}:11211"
  350. depends_on:
  351. - php-fpm
  352. networks:
  353. - backend
  354. ### Beanstalkd Container ####################################
  355. beanstalkd:
  356. build: ./beanstalkd
  357. ports:
  358. - "${BEANSTALKD_HOST_PORT}:11300"
  359. privileged: true
  360. depends_on:
  361. - php-fpm
  362. networks:
  363. - backend
  364. ### RabbitMQ Container ######################################
  365. rabbitmq:
  366. build: ./rabbitmq
  367. ports:
  368. - "${RABBITMQ_NODE_HOST_PORT}:5672"
  369. - "${RABBITMQ_MANAGEMENT_HTTP_HOST_PORT}:15672"
  370. - "${RABBITMQ_MANAGEMENT_HTTPS_HOST_PORT}:15671"
  371. privileged: true
  372. environment:
  373. - RABBITMQ_DEFAULT_USER=${RABBITMQ_DEFAULT_USER}
  374. - RABBITMQ_DEFAULT_PASS=${RABBITMQ_DEFAULT_PASS}
  375. depends_on:
  376. - php-fpm
  377. networks:
  378. - backend
  379. ### Beanstalkd Console Container ############################
  380. beanstalkd-console:
  381. build: ./beanstalkd-console
  382. ports:
  383. - "${BEANSTALKD_CONSOLE_HOST_PORT}:2080"
  384. depends_on:
  385. - beanstalkd
  386. networks:
  387. - backend
  388. ### Caddy Server Container ##################################
  389. caddy:
  390. build: ./caddy
  391. volumes_from:
  392. - applications
  393. volumes:
  394. - ${CADDY_CUSTOM_CADDYFILE}:/etc/Caddyfile
  395. - ${CADDY_HOST_LOG_PATH}:/var/log/caddy
  396. - ${DATA_SAVE_PATH}:/root/.caddy
  397. ports:
  398. - "${CADDY_HOST_HTTP_PORT}:80"
  399. - "${CADDY_HOST_HTTPS_PORT}:443"
  400. depends_on:
  401. - php-fpm
  402. networks:
  403. - frontend
  404. - backend
  405. ### phpMyAdmin Container ####################################
  406. phpmyadmin:
  407. build: ./phpmyadmin
  408. environment:
  409. - PMA_ARBITRARY=1
  410. - MYSQL_USER=${PMA_USER}
  411. - MYSQL_PASSWORD=${PMA_PASSWORD}
  412. - MYSQL_ROOT_PASSWORD=${PMA_ROOT_PASSWORD}
  413. ports:
  414. - "${PMA_PORT}:80"
  415. depends_on:
  416. - "${PMA_DB_ENGINE}"
  417. networks:
  418. - frontend
  419. - backend
  420. ### Adminer Container ####################################
  421. adminer:
  422. build:
  423. context: ./adminer
  424. args:
  425. - INSTALL_MSSQL=${ADM_INSTALL_MSSQL}
  426. ports:
  427. - "${ADM_PORT}:8080"
  428. depends_on:
  429. - php-fpm
  430. networks:
  431. - frontend
  432. - backend
  433. ### pgAdmin Container #######################################
  434. pgadmin:
  435. build: ./pgadmin
  436. ports:
  437. - "5050:5050"
  438. volumes:
  439. - ${DATA_SAVE_PATH}/pgadmin-backup:/var/lib/pgadmin/storage/pgadmin4
  440. depends_on:
  441. - postgres
  442. networks:
  443. - frontend
  444. - backend
  445. ### ElasticSearch Container #################################
  446. elasticsearch:
  447. build: ./elasticsearch
  448. volumes:
  449. - elasticsearch-data:/usr/share/elasticsearch/data
  450. - elasticsearch-plugins:/usr/share/elasticsearch/plugins
  451. environment:
  452. - cluster.name=laradock-cluster
  453. - bootstrap.memory_lock=true
  454. - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
  455. ulimits:
  456. memlock:
  457. soft: -1
  458. hard: -1
  459. mem_limit: 1024m
  460. ports:
  461. - "${ELASTICSEARCH_HOST_HTTP_PORT}:9200"
  462. - "${ELASTICSEARCH_HOST_TRANSPORT_PORT}:9300"
  463. depends_on:
  464. - php-fpm
  465. networks:
  466. - frontend
  467. - backend
  468. ### Kibana Container #######################################
  469. kibana:
  470. build: ./kibana
  471. ports:
  472. - "${KIBANA_HTTP_PORT}:5601"
  473. depends_on:
  474. - elasticsearch
  475. networks:
  476. - frontend
  477. - backend
  478. ### Certbot Container ##################################
  479. certbot:
  480. build:
  481. context: ./certbot
  482. volumes:
  483. - ./data/certbot/certs/:/var/certs
  484. - ./certbot/letsencrypt/:/var/www/letsencrypt
  485. environment:
  486. - CN="fake.domain.com"
  487. - EMAIL="fake.email@gmail.com"
  488. networks:
  489. - frontend
  490. ### Mailhog Container #########################################
  491. mailhog:
  492. build: ./mailhog
  493. ports:
  494. - "1025:1025"
  495. - "8025:8025"
  496. networks:
  497. - frontend
  498. - backend
  499. ### MailDev Container #######################################
  500. maildev:
  501. build: ./maildev
  502. ports:
  503. - "${MAILDEV_HTTP_PORT}:80"
  504. - "${MAILDEV_SMTP_PORT}:25"
  505. networks:
  506. - frontend
  507. - backend
  508. ### Selenium Container ########################################
  509. selenium:
  510. build: ./selenium
  511. ports:
  512. - "${SELENIUM_PORT}:4444"
  513. volumes:
  514. - /dev/shm:/dev/shm
  515. networks:
  516. - frontend
  517. ### Varnish Proxy 1 ##########################################
  518. proxy:
  519. build: ./varnish
  520. expose:
  521. - ${VARNISH_PORT}
  522. environment:
  523. - VARNISH_CONFIG=${VARNISH_CONFIG}
  524. - CACHE_SIZE=${VARNISH_PROXY1_CACHE_SIZE}
  525. - VARNISHD_PARAMS=${VARNISHD_PARAMS}
  526. - VARNISH_PORT=${VARNISH_PORT}
  527. - BACKEND_HOST=${VARNISH_PROXY1_BACKEND_HOST}
  528. - BACKEND_PORT=${VARNISH_BACKEND_PORT}
  529. - VARNISH_SERVER=${VARNISH_PROXY1_SERVER}
  530. links:
  531. - workspace
  532. networks:
  533. - frontend
  534. ### Varnish Proxy 2 ##########################################
  535. proxy2:
  536. build: ./varnish
  537. expose:
  538. - ${VARNISH_PORT}
  539. environment:
  540. - VARNISH_CONFIG=${VARNISH_CONFIG}
  541. - CACHE_SIZE=${VARNISH_PROXY2_CACHE_SIZE}
  542. - VARNISHD_PARAMS=${VARNISHD_PARAMS}
  543. - VARNISH_PORT=${VARNISH_PORT}
  544. - BACKEND_HOST=${VARNISH_PROXY2_BACKEND_HOST}
  545. - BACKEND_PORT=${VARNISH_BACKEND_PORT}
  546. - VARNISH_SERVER=${VARNISH_PROXY2_SERVER}
  547. links:
  548. - workspace
  549. networks:
  550. - frontend
  551. ### HAProxy Load Balancer ####################################
  552. haproxy:
  553. build: ./haproxy
  554. ports:
  555. - "${HAPROXY_HOST_HTTP_PORT}:8085"
  556. volumes:
  557. - /var/run/docker.sock:/var/run/docker.sock
  558. links:
  559. - proxy
  560. - proxy2
  561. ### Jenkins ###################################################
  562. jenkins:
  563. build: ./jenkins
  564. environment:
  565. JAVA_OPTS: "-Djava.awt.headless=true"
  566. ports:
  567. - "${JENKINS_HOST_SLAVE_AGENT_PORT}:50000"
  568. - "${JENKINS_HOST_HTTP_PORT}:8080"
  569. privileged: true
  570. volumes:
  571. - ${JENKINS_HOME}:/var/jenkins_home
  572. - /var/run/docker.sock:/var/run/docker.sock
  573. networks:
  574. - frontend
  575. - backend
  576. ### Grafana Container #########################################
  577. grafana:
  578. build:
  579. context: ./grafana
  580. volumes:
  581. - ${DATA_SAVE_PATH}/grafana:/var/lib/grafana
  582. ports:
  583. - "${GRAFANA_PORT}:3000"
  584. networks:
  585. - backend
  586. ### Laravel Echo Server #######################################
  587. laravel-echo-server:
  588. build:
  589. context: ./laravel-echo-server
  590. volumes:
  591. - ./laravel-echo-server/laravel-echo-server.json:/app/laravel-echo-server.json:ro
  592. ports:
  593. - "${LARAVEL_ECHO_SERVER_PORT}:6001"
  594. links:
  595. - redis
  596. networks:
  597. - frontend
  598. - backend
  599. ### Solr Container #########################################
  600. solr:
  601. build:
  602. context: ./solr
  603. args:
  604. - SOLR_VERSION=${SOLR_VERSION}
  605. - SOLR_DATAIMPORTHANDLER_MYSQL=${SOLR_DATAIMPORTHANDLER_MYSQL}
  606. volumes:
  607. - ${DATA_SAVE_PATH}/solr:/opt/solr/server/solr/mycores
  608. ports:
  609. - "${SOLR_PORT}:8983"
  610. networks:
  611. - backend
  612. ### AWS EB-CLI ####
  613. aws:
  614. build:
  615. context: ./aws
  616. volumes_from:
  617. - applications
  618. depends_on:
  619. - workspace
  620. tty: true
  621. ### Networks Setup ############################################
  622. networks:
  623. frontend:
  624. driver: "bridge"
  625. backend:
  626. driver: "bridge"
  627. ### Volumes Setup #############################################
  628. volumes:
  629. mysql:
  630. driver: "local"
  631. percona:
  632. driver: "local"
  633. mssql:
  634. driver: "local"
  635. postgres:
  636. driver: "local"
  637. memcached:
  638. driver: "local"
  639. redis:
  640. driver: "local"
  641. neo4j:
  642. driver: "local"
  643. mariadb:
  644. driver: "local"
  645. mongo:
  646. driver: "local"
  647. minio:
  648. driver: "local"
  649. rethinkdb:
  650. driver: "local"
  651. phpmyadmin:
  652. driver: "local"
  653. adminer:
  654. driver: "local"
  655. aerospike:
  656. driver: "local"
  657. caddy:
  658. driver: "local"
  659. elasticsearch-data:
  660. driver: "local"
  661. elasticsearch-plugins:
  662. driver: "local"