docker-compose.yml 28 KB

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