docker-compose.yml 17 KB

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