docker-compose.yml 23 KB

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