docker-compose.yml 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877
  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. - INSTALL_CALENDAR=${PHP_FPM_INSTALL_CALENDAR}
  142. volumes:
  143. - ./php-fpm/php${PHP_VERSION}.ini:/usr/local/etc/php/php.ini
  144. - ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER}
  145. expose:
  146. - "9000"
  147. extra_hosts:
  148. - "dockerhost:${DOCKER_HOST_IP}"
  149. environment:
  150. - PHP_IDE_CONFIG=${PHP_IDE_CONFIG}
  151. - DOCKER_HOST=tcp://docker-in-docker:2375
  152. depends_on:
  153. - workspace
  154. networks:
  155. - backend
  156. links:
  157. - docker-in-docker
  158. ### PHP Worker ############################################
  159. php-worker:
  160. build:
  161. context: ./php-worker
  162. args:
  163. - PHP_VERSION=${PHP_VERSION}
  164. - INSTALL_PGSQL=${PHP_WORKER_INSTALL_PGSQL}
  165. volumes:
  166. - ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER}
  167. - ./php-worker/supervisord.d:/etc/supervisord.d
  168. depends_on:
  169. - workspace
  170. extra_hosts:
  171. - "dockerhost:${DOCKER_HOST_IP}"
  172. networks:
  173. - backend
  174. ### NGINX Server #########################################
  175. nginx:
  176. build:
  177. context: ./nginx
  178. args:
  179. - PHP_UPSTREAM_CONTAINER=${NGINX_PHP_UPSTREAM_CONTAINER}
  180. - PHP_UPSTREAM_PORT=${NGINX_PHP_UPSTREAM_PORT}
  181. volumes:
  182. - ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER}
  183. - ${NGINX_HOST_LOG_PATH}:/var/log/nginx
  184. - ${NGINX_SITES_PATH}:/etc/nginx/sites-available
  185. ports:
  186. - "${NGINX_HOST_HTTP_PORT}:80"
  187. - "${NGINX_HOST_HTTPS_PORT}:443"
  188. depends_on:
  189. - php-fpm
  190. networks:
  191. - frontend
  192. - backend
  193. ### Blackfire ########################################
  194. blackfire:
  195. image: blackfire/blackfire
  196. environment:
  197. - BLACKFIRE_SERVER_ID=${BLACKFIRE_SERVER_ID}
  198. - BLACKFIRE_SERVER_TOKEN=${BLACKFIRE_SERVER_TOKEN}
  199. depends_on:
  200. - php-fpm
  201. networks:
  202. - backend
  203. ### Apache Server ########################################
  204. apache2:
  205. build:
  206. context: ./apache2
  207. args:
  208. - PHP_UPSTREAM_CONTAINER=${APACHE_PHP_UPSTREAM_CONTAINER}
  209. - PHP_UPSTREAM_PORT=${APACHE_PHP_UPSTREAM_PORT}
  210. - PHP_UPSTREAM_TIMEOUT=${APACHE_PHP_UPSTREAM_TIMEOUT}
  211. - DOCUMENT_ROOT=${APACHE_DOCUMENT_ROOT}
  212. volumes:
  213. - ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER}
  214. - ${APACHE_HOST_LOG_PATH}:/var/log/apache2
  215. - ${APACHE_SITES_PATH}:/etc/apache2/sites-available
  216. ports:
  217. - "${APACHE_HOST_HTTP_PORT}:80"
  218. - "${APACHE_HOST_HTTPS_PORT}:443"
  219. depends_on:
  220. - php-fpm
  221. networks:
  222. - frontend
  223. - backend
  224. ### HHVM #################################################
  225. hhvm:
  226. build: ./hhvm
  227. volumes:
  228. - ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER}
  229. expose:
  230. - "9000"
  231. depends_on:
  232. - workspace
  233. networks:
  234. - frontend
  235. - backend
  236. ### Minio ################################################
  237. minio:
  238. build: ./minio
  239. volumes:
  240. - ${DATA_PATH_HOST}/minio/data:/export
  241. - ${DATA_PATH_HOST}/minio/config:/root/.minio
  242. ports:
  243. - "${MINIO_PORT}:9000"
  244. environment:
  245. - MINIO_ACCESS_KEY=access
  246. - MINIO_SECRET_KEY=secretkey
  247. networks:
  248. - frontend
  249. - backend
  250. ### MySQL ################################################
  251. mysql:
  252. build:
  253. context: ./mysql
  254. args:
  255. - MYSQL_VERSION=${MYSQL_VERSION}
  256. environment:
  257. - MYSQL_DATABASE=${MYSQL_DATABASE}
  258. - MYSQL_USER=${MYSQL_USER}
  259. - MYSQL_PASSWORD=${MYSQL_PASSWORD}
  260. - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
  261. - TZ=${WORKSPACE_TIMEZONE}
  262. volumes:
  263. - ${DATA_PATH_HOST}/mysql:/var/lib/mysql
  264. - ${MYSQL_ENTRYPOINT_INITDB}:/docker-entrypoint-initdb.d
  265. ports:
  266. - "${MYSQL_PORT}:3306"
  267. networks:
  268. - backend
  269. ### Percona ################################################
  270. percona:
  271. build:
  272. context: ./percona
  273. environment:
  274. - MYSQL_DATABASE=${PERCONA_DATABASE}
  275. - MYSQL_USER=${PERCONA_USER}
  276. - MYSQL_PASSWORD=${PERCONA_PASSWORD}
  277. - MYSQL_ROOT_PASSWORD=${PERCONA_ROOT_PASSWORD}
  278. volumes:
  279. - ${DATA_PATH_HOST}/percona:/var/lib/mysql
  280. - ${PERCONA_ENTRYPOINT_INITDB}:/docker-entrypoint-initdb.d
  281. ports:
  282. - "${PERCONA_PORT}:3306"
  283. networks:
  284. - backend
  285. ### MSSQL ################################################
  286. mssql:
  287. build:
  288. context: ./mssql
  289. environment:
  290. - MSSQL_DATABASE=${MSSQL_DATABASE}
  291. - SA_PASSWORD=${MSSQL_PASSWORD}
  292. - ACCEPT_EULA=Y
  293. volumes:
  294. - ${DATA_PATH_HOST}/mssql:/var/opt/mssql
  295. ports:
  296. - "${MSSQL_PORT}:1433"
  297. networks:
  298. - backend
  299. ### MariaDB ##############################################
  300. mariadb:
  301. build: ./mariadb
  302. volumes:
  303. - ${DATA_PATH_HOST}/mariadb:/var/lib/mysql
  304. - ${MARIADB_ENTRYPOINT_INITDB}:/docker-entrypoint-initdb.d
  305. ports:
  306. - "${MARIADB_PORT}:3306"
  307. environment:
  308. - MYSQL_DATABASE=${MARIADB_DATABASE}
  309. - MYSQL_USER=${MARIADB_USER}
  310. - MYSQL_PASSWORD=${MARIADB_PASSWORD}
  311. - MYSQL_ROOT_PASSWORD=${MARIADB_ROOT_PASSWORD}
  312. networks:
  313. - backend
  314. ### PostgreSQL ###########################################
  315. postgres:
  316. build: ./postgres
  317. volumes:
  318. - ${DATA_PATH_HOST}/postgres:/var/lib/postgresql/data
  319. - ${POSTGRES_ENTRYPOINT_INITDB}:/docker-entrypoint-initdb.d
  320. ports:
  321. - "${POSTGRES_PORT}:5432"
  322. environment:
  323. - POSTGRES_DB=${POSTGRES_DB}
  324. - POSTGRES_USER=${POSTGRES_USER}
  325. - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
  326. networks:
  327. - backend
  328. ### PostgreSQL PostGis ###################################
  329. postgres-postgis:
  330. build: ./postgres-postgis
  331. volumes:
  332. - ${DATA_PATH_HOST}/postgres:/var/lib/postgresql/data
  333. ports:
  334. - "${POSTGRES_PORT}:5432"
  335. environment:
  336. - POSTGRES_DB=${POSTGRES_DB}
  337. - POSTGRES_USER=${POSTGRES_USER}
  338. - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
  339. networks:
  340. - backend
  341. ### Neo4j ################################################
  342. neo4j:
  343. build: ./neo4j
  344. ports:
  345. - "7474:7474"
  346. - "1337:1337"
  347. environment:
  348. - NEO4J_AUTH=default:secret
  349. volumes:
  350. - ${DATA_PATH_HOST}/neo4j:/var/lib/neo4j/data
  351. networks:
  352. - backend
  353. ### MongoDB ##############################################
  354. mongo:
  355. build: ./mongo
  356. ports:
  357. - "${MONGODB_PORT}:27017"
  358. volumes:
  359. - ${DATA_PATH_HOST}/mongo:/data/db
  360. networks:
  361. - backend
  362. ### RethinkDB ##############################################
  363. rethinkdb:
  364. build: ./rethinkdb
  365. ports:
  366. - "${RETHINKDB_PORT}:8080"
  367. volumes:
  368. - ${DATA_PATH_HOST}/rethinkdb:/data/rethinkdb_data
  369. networks:
  370. - backend
  371. ### Redis ################################################
  372. redis:
  373. build: ./redis
  374. volumes:
  375. - ${DATA_PATH_HOST}/redis:/data
  376. ports:
  377. - "${REDIS_PORT}:6379"
  378. networks:
  379. - backend
  380. ### Aerospike ##########################################
  381. aerospike:
  382. build: ./aerospike
  383. volumes:
  384. - workspace
  385. - ${DATA_PATH_HOST}/aerospike:/opt/aerospike/data
  386. ports:
  387. - "${AEROSPIKE_SERVICE_PORT}:3000"
  388. - "${AEROSPIKE_FABRIC_PORT}:3001"
  389. - "${AEROSPIKE_HEARTBEAT_PORT}:3002"
  390. - "${AEROSPIKE_INFO_PORT}:3003"
  391. networks:
  392. - backend
  393. ### Memcached ############################################
  394. memcached:
  395. build: ./memcached
  396. volumes:
  397. - ${DATA_PATH_HOST}/memcached:/var/lib/memcached
  398. ports:
  399. - "${MEMCACHED_HOST_PORT}:11211"
  400. depends_on:
  401. - php-fpm
  402. networks:
  403. - backend
  404. ### Beanstalkd ###########################################
  405. beanstalkd:
  406. build: ./beanstalkd
  407. ports:
  408. - "${BEANSTALKD_HOST_PORT}:11300"
  409. privileged: true
  410. depends_on:
  411. - php-fpm
  412. networks:
  413. - backend
  414. ### RabbitMQ #############################################
  415. rabbitmq:
  416. build: ./rabbitmq
  417. ports:
  418. - "${RABBITMQ_NODE_HOST_PORT}:5672"
  419. - "${RABBITMQ_MANAGEMENT_HTTP_HOST_PORT}:15672"
  420. - "${RABBITMQ_MANAGEMENT_HTTPS_HOST_PORT}:15671"
  421. privileged: true
  422. environment:
  423. - RABBITMQ_DEFAULT_USER=${RABBITMQ_DEFAULT_USER}
  424. - RABBITMQ_DEFAULT_PASS=${RABBITMQ_DEFAULT_PASS}
  425. depends_on:
  426. - php-fpm
  427. networks:
  428. - backend
  429. ### Beanstalkd Console ###################################
  430. beanstalkd-console:
  431. build: ./beanstalkd-console
  432. ports:
  433. - "${BEANSTALKD_CONSOLE_HOST_PORT}:2080"
  434. depends_on:
  435. - beanstalkd
  436. networks:
  437. - backend
  438. ### Caddy Server #########################################
  439. caddy:
  440. build: ./caddy
  441. volumes:
  442. - ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER}
  443. - ${CADDY_CUSTOM_CADDYFILE}:/etc/Caddyfile
  444. - ${CADDY_HOST_LOG_PATH}:/var/log/caddy
  445. - ${DATA_PATH_HOST}:/root/.caddy
  446. ports:
  447. - "${CADDY_HOST_HTTP_PORT}:80"
  448. - "${CADDY_HOST_HTTPS_PORT}:443"
  449. depends_on:
  450. - php-fpm
  451. networks:
  452. - frontend
  453. - backend
  454. ### phpMyAdmin ###########################################
  455. phpmyadmin:
  456. build: ./phpmyadmin
  457. environment:
  458. - PMA_ARBITRARY=1
  459. - MYSQL_USER=${PMA_USER}
  460. - MYSQL_PASSWORD=${PMA_PASSWORD}
  461. - MYSQL_ROOT_PASSWORD=${PMA_ROOT_PASSWORD}
  462. ports:
  463. - "${PMA_PORT}:80"
  464. depends_on:
  465. - "${PMA_DB_ENGINE}"
  466. networks:
  467. - frontend
  468. - backend
  469. ### Adminer ###########################################
  470. adminer:
  471. build:
  472. context: ./adminer
  473. args:
  474. - INSTALL_MSSQL=${ADM_INSTALL_MSSQL}
  475. ports:
  476. - "${ADM_PORT}:8080"
  477. depends_on:
  478. - php-fpm
  479. networks:
  480. - frontend
  481. - backend
  482. ### pgAdmin ##############################################
  483. pgadmin:
  484. build: ./pgadmin
  485. ports:
  486. - "5050:5050"
  487. volumes:
  488. - ${DATA_PATH_HOST}/pgadmin-backup:/var/lib/pgadmin/storage/pgadmin4
  489. depends_on:
  490. - postgres
  491. networks:
  492. - frontend
  493. - backend
  494. ### ElasticSearch ########################################
  495. elasticsearch:
  496. build: ./elasticsearch
  497. volumes:
  498. - elasticsearch:/usr/share/elasticsearch/data
  499. environment:
  500. - cluster.name=laradock-cluster
  501. - bootstrap.memory_lock=true
  502. - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
  503. ulimits:
  504. memlock:
  505. soft: -1
  506. hard: -1
  507. ports:
  508. - "${ELASTICSEARCH_HOST_HTTP_PORT}:9200"
  509. - "${ELASTICSEARCH_HOST_TRANSPORT_PORT}:9300"
  510. depends_on:
  511. - php-fpm
  512. networks:
  513. - frontend
  514. - backend
  515. ### Kibana ##############################################
  516. kibana:
  517. build: ./kibana
  518. ports:
  519. - "${KIBANA_HTTP_PORT}:5601"
  520. depends_on:
  521. - elasticsearch
  522. networks:
  523. - frontend
  524. - backend
  525. ### Certbot #########################################
  526. certbot:
  527. build:
  528. context: ./certbot
  529. volumes:
  530. - ./data/certbot/certs/:/var/certs
  531. - ./certbot/letsencrypt/:${APP_CODE_PATH_CONTAINER}/letsencrypt
  532. environment:
  533. - CN="fake.domain.com"
  534. - EMAIL="fake.email@gmail.com"
  535. networks:
  536. - frontend
  537. ### Mailhog ################################################
  538. mailhog:
  539. build: ./mailhog
  540. ports:
  541. - "1025:1025"
  542. - "8025:8025"
  543. networks:
  544. - frontend
  545. - backend
  546. ### MailDev ##############################################
  547. maildev:
  548. build: ./maildev
  549. ports:
  550. - "${MAILDEV_HTTP_PORT}:80"
  551. - "${MAILDEV_SMTP_PORT}:25"
  552. networks:
  553. - frontend
  554. - backend
  555. ### Selenium ###############################################
  556. selenium:
  557. build: ./selenium
  558. ports:
  559. - "${SELENIUM_PORT}:4444"
  560. volumes:
  561. - /dev/shm:/dev/shm
  562. networks:
  563. - frontend
  564. ### Varnish ##########################################
  565. proxy:
  566. build: ./varnish
  567. expose:
  568. - ${VARNISH_PORT}
  569. environment:
  570. - VARNISH_CONFIG=${VARNISH_CONFIG}
  571. - CACHE_SIZE=${VARNISH_PROXY1_CACHE_SIZE}
  572. - VARNISHD_PARAMS=${VARNISHD_PARAMS}
  573. - VARNISH_PORT=${VARNISH_PORT}
  574. - BACKEND_HOST=${VARNISH_PROXY1_BACKEND_HOST}
  575. - BACKEND_PORT=${VARNISH_BACKEND_PORT}
  576. - VARNISH_SERVER=${VARNISH_PROXY1_SERVER}
  577. links:
  578. - workspace
  579. networks:
  580. - frontend
  581. proxy2:
  582. build: ./varnish
  583. expose:
  584. - ${VARNISH_PORT}
  585. environment:
  586. - VARNISH_CONFIG=${VARNISH_CONFIG}
  587. - CACHE_SIZE=${VARNISH_PROXY2_CACHE_SIZE}
  588. - VARNISHD_PARAMS=${VARNISHD_PARAMS}
  589. - VARNISH_PORT=${VARNISH_PORT}
  590. - BACKEND_HOST=${VARNISH_PROXY2_BACKEND_HOST}
  591. - BACKEND_PORT=${VARNISH_BACKEND_PORT}
  592. - VARNISH_SERVER=${VARNISH_PROXY2_SERVER}
  593. links:
  594. - workspace
  595. networks:
  596. - frontend
  597. ### HAProxy ####################################
  598. haproxy:
  599. build: ./haproxy
  600. ports:
  601. - "${HAPROXY_HOST_HTTP_PORT}:8085"
  602. volumes:
  603. - /var/run/docker.sock:/var/run/docker.sock
  604. links:
  605. - proxy
  606. - proxy2
  607. ### Jenkins ###################################################
  608. jenkins:
  609. build: ./jenkins
  610. environment:
  611. JAVA_OPTS: "-Djava.awt.headless=true"
  612. ports:
  613. - "${JENKINS_HOST_SLAVE_AGENT_PORT}:50000"
  614. - "${JENKINS_HOST_HTTP_PORT}:8080"
  615. privileged: true
  616. volumes:
  617. - ${JENKINS_HOME}:/var/jenkins_home
  618. - /var/run/docker.sock:/var/run/docker.sock
  619. networks:
  620. - frontend
  621. - backend
  622. ### Grafana ################################################
  623. grafana:
  624. build:
  625. context: ./grafana
  626. volumes:
  627. - ${DATA_PATH_HOST}/grafana:/var/lib/grafana
  628. ports:
  629. - "${GRAFANA_PORT}:3000"
  630. networks:
  631. - backend
  632. ### Laravel Echo Server #######################################
  633. laravel-echo-server:
  634. build:
  635. context: ./laravel-echo-server
  636. volumes:
  637. - ./laravel-echo-server/laravel-echo-server.json:/app/laravel-echo-server.json:ro
  638. ports:
  639. - "${LARAVEL_ECHO_SERVER_PORT}:6001"
  640. links:
  641. - redis
  642. networks:
  643. - frontend
  644. - backend
  645. ### Solr ################################################
  646. solr:
  647. build:
  648. context: ./solr
  649. args:
  650. - SOLR_VERSION=${SOLR_VERSION}
  651. - SOLR_DATAIMPORTHANDLER_MYSQL=${SOLR_DATAIMPORTHANDLER_MYSQL}
  652. volumes:
  653. - ${DATA_PATH_HOST}/solr:/opt/solr/server/solr/mycores
  654. ports:
  655. - "${SOLR_PORT}:8983"
  656. networks:
  657. - backend
  658. ### AWS EB-CLI ################################################
  659. aws:
  660. build:
  661. context: ./aws
  662. volumes:
  663. - ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER}
  664. depends_on:
  665. - workspace
  666. tty: true
  667. ### Portainer ################################################
  668. portainer:
  669. build:
  670. context: ./portainer
  671. volumes:
  672. - ${DATA_PATH_HOST}/portainer_data:/data
  673. - /var/run/docker.sock:/var/run/docker.sock
  674. extra_hosts:
  675. - "dockerhost:${DOCKER_HOST_IP}"
  676. ports:
  677. - 9010:9000
  678. networks:
  679. - backend
  680. ### Gitlab ################################################
  681. gitlab:
  682. build:
  683. context: ./gitlab
  684. environment:
  685. GITLAB_OMNIBUS_CONFIG: |
  686. external_url '${GITLAB_DOMAIN_NAME}'
  687. redis['enable'] = false
  688. nginx['listen_https'] = false
  689. nginx['listen_port'] = 80
  690. postgresql['enable'] = false
  691. gitlab_rails['trusted_proxies'] = ['caddy','nginx','apache2']
  692. gitlab_rails['redis_host'] = 'redis'
  693. gitlab_rails['redis_database'] = 8
  694. gitlab_rails['db_host'] = 'postgres'
  695. gitlab_rails['db_username'] = 'laradock_gitlab'
  696. gitlab_rails['db_password'] = 'laradock_gitlab'
  697. gitlab_rails['db_database'] = 'laradock_gitlab'
  698. gitlab_rails['initial_root_password'] = '${GITLAB_ROOT_PASSWORD}'
  699. gitlab_rails['gitlab_shell_ssh_port'] = ${GITLAB_HOST_SSH_PORT}
  700. volumes:
  701. - ${DATA_PATH_HOST}/gitlab/config:/etc/gitlab
  702. - ${DATA_PATH_HOST}/gitlab/data:/var/opt/gitlab
  703. - ${GITLAB_HOST_LOG_PATH}:/var/log/gitlab
  704. ports:
  705. - "${GITLAB_HOST_HTTP_PORT}:80"
  706. - "${GITLAB_HOST_HTTPS_PORT}:443"
  707. - "${GITLAB_HOST_SSH_PORT}:22"
  708. networks:
  709. - backend
  710. depends_on:
  711. - redis
  712. - postgres
  713. gitlab-runner:
  714. image: gitlab/gitlab-runner:latest
  715. environment:
  716. - CI_SERVER_URL=${GITLAB_DOMAIN_NAME}
  717. volumes:
  718. - ${DATA_PATH_HOST}/gitlab/runner:/etc/gitlab-runner
  719. - /var/run/docker.sock:/var/run/docker.sock:rw
  720. restart: always
  721. ### JupyterHub #########################################
  722. jupyterhub:
  723. build:
  724. context: ./jupyterhub
  725. depends_on:
  726. - postgres
  727. - jupyterhub-user
  728. restart: always
  729. volumes:
  730. - /var/run/docker.sock:/var/run/docker.sock:rw
  731. - ${DATA_PATH_HOST}/jupyterhub/:/data
  732. - ${JUPYTERHUB_CUSTOM_CONFIG}:/jupyterhub_config.py
  733. - ${JUPYTERHUB_USER_DATA}:/user-data
  734. - ${JUPYTERHUB_USER_LIST}:/userlist
  735. networks:
  736. - backend
  737. ports:
  738. - "${JUPYTERHUB_PORT}:80"
  739. environment:
  740. - TERM=xterm
  741. - JUPYTERHUB_USER_DATA=${JUPYTERHUB_USER_DATA}
  742. - JUPYTERHUB_POSTGRES_DB=${JUPYTERHUB_POSTGRES_DB}
  743. - JUPYTERHUB_POSTGRES_USER=${JUPYTERHUB_POSTGRES_USER}
  744. - JUPYTERHUB_POSTGRES_HOST=${JUPYTERHUB_POSTGRES_HOST}
  745. - JUPYTERHUB_POSTGRES_PASSWORD=${JUPYTERHUB_POSTGRES_PASSWORD}
  746. - JUPYTERHUB_OAUTH_CALLBACK_URL=${JUPYTERHUB_OAUTH_CALLBACK_URL}
  747. - JUPYTERHUB_OAUTH_CLIENT_ID=${JUPYTERHUB_OAUTH_CLIENT_ID}
  748. - JUPYTERHUB_OAUTH_CLIENT_SECRET=${JUPYTERHUB_OAUTH_CLIENT_SECRET}
  749. - JUPYTERHUB_LOCAL_NOTEBOOK_IMAGE=${JUPYTERHUB_LOCAL_NOTEBOOK_IMAGE}
  750. jupyterhub-user:
  751. build:
  752. context: ./jupyterhub
  753. dockerfile: Dockerfile.user
  754. command: ["sh", "-c", "echo \"build only\""]
  755. ### IPython #########################################
  756. ipython-controller:
  757. build:
  758. context: ./ipython
  759. dockerfile: Dockerfile.controller
  760. networks:
  761. - backend
  762. extra_hosts:
  763. - "laradock-ipython:${LARADOCK_IPYTHON_CONTROLLER_IP}"
  764. ports:
  765. - "33327-33338:33327-33338"
  766. ipython-engine:
  767. build:
  768. context: ./ipython
  769. dockerfile: Dockerfile.engine
  770. networks:
  771. - backend
  772. extra_hosts:
  773. - "laradock-ipython:${LARADOCK_IPYTHON_CONTROLLER_IP}"
  774. ### Docker-in-Docker ################################################
  775. docker-in-docker:
  776. image: docker:dind
  777. privileged: true
  778. volumes:
  779. - ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER}
  780. expose:
  781. - 2375
  782. networks:
  783. - backend
  784. ### NetData ################################################
  785. netdata:
  786. image: titpetric/netdata:latest
  787. cap_add:
  788. - SYS_PTRACE
  789. volumes:
  790. - /:/host:ro
  791. ports:
  792. - "${NETDATA_PORT}:19999"
  793. networks:
  794. - backend
  795. ### PHPRedisAdmin ################################################
  796. phpredisadmin:
  797. image: erikdubbelboer/phpredisadmin:latest
  798. environment:
  799. - ADMIN_USER=${REDIS_WEBUI_USERNAME}
  800. - ADMIN_PASS=${REDIS_WEBUI_PASSWORD}
  801. - REDIS_1_HOST=${REDIS_WEBUI_CONNECT_HOST}
  802. - REDIS_1_PORT=${REDIS_WEBUI_CONNECT_PORT}
  803. networks:
  804. - backend
  805. ports:
  806. - "${REDIS_WEBUI_PORT}:80"
  807. depends_on:
  808. - redis
  809. ### MongoWebUI ################################################
  810. mongo-webui:
  811. build:
  812. context: ./mongo-webui
  813. restart: always
  814. environment:
  815. - ROOT_URL=${MONGO_WEBUI_ROOT_URL}
  816. - MONGO_URL=${MONGO_WEBUI_MONGO_URL}
  817. - INSTALL_MONGO=${MONGO_WEBUI_INSTALL_MONGO}
  818. volumes:
  819. - ${DATA_PATH_HOST}/mongo-webui:/data/db
  820. ports:
  821. - "${MONGO_WEBUI_PORT}:3000"
  822. networks:
  823. - backend
  824. depends_on:
  825. - mongo