docker-compose.yml 20 KB

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