laradock/docker-compose.yml

1621 lines
54 KiB
YAML
Raw Normal View History

2018-04-05 21:43:22 +08:00
version: '3'
2018-04-05 21:43:22 +08:00
networks:
frontend:
driver: ${NETWORKS_DRIVER}
backend:
driver: ${NETWORKS_DRIVER}
2018-04-05 21:43:22 +08:00
volumes:
mysql:
driver: ${VOLUMES_DRIVER}
percona:
driver: ${VOLUMES_DRIVER}
mssql:
driver: ${VOLUMES_DRIVER}
postgres:
driver: ${VOLUMES_DRIVER}
memcached:
driver: ${VOLUMES_DRIVER}
redis:
driver: ${VOLUMES_DRIVER}
neo4j:
driver: ${VOLUMES_DRIVER}
mariadb:
driver: ${VOLUMES_DRIVER}
mongo:
driver: ${VOLUMES_DRIVER}
minio:
driver: ${VOLUMES_DRIVER}
rethinkdb:
driver: ${VOLUMES_DRIVER}
phpmyadmin:
driver: ${VOLUMES_DRIVER}
adminer:
driver: ${VOLUMES_DRIVER}
aerospike:
driver: ${VOLUMES_DRIVER}
caddy:
driver: ${VOLUMES_DRIVER}
elasticsearch:
driver: ${VOLUMES_DRIVER}
mosquitto:
driver: ${VOLUMES_DRIVER}
confluence:
driver: ${VOLUMES_DRIVER}
sonarqube:
driver: ${VOLUMES_DRIVER}
cassandra:
driver: ${VOLUMES_DRIVER}
2018-04-05 21:43:22 +08:00
services:
2018-04-05 21:43:22 +08:00
### Workspace Utilities ##################################
workspace:
2017-03-17 14:57:54 +08:00
build:
context: ./workspace
args:
- LARADOCK_PHP_VERSION=${PHP_VERSION}
- LARADOCK_PHALCON_VERSION=${PHALCON_VERSION}
2018-05-07 16:58:55 +08:00
- INSTALL_SUBVERSION=${WORKSPACE_INSTALL_SUBVERSION}
2017-03-17 14:57:54 +08:00
- INSTALL_XDEBUG=${WORKSPACE_INSTALL_XDEBUG}
- INSTALL_PHPDBG=${WORKSPACE_INSTALL_PHPDBG}
2017-04-21 06:02:54 +08:00
- INSTALL_BLACKFIRE=${INSTALL_BLACKFIRE}
- INSTALL_SSH2=${WORKSPACE_INSTALL_SSH2}
- INSTALL_GMP=${WORKSPACE_INSTALL_GMP}
2017-03-17 14:57:54 +08:00
- INSTALL_SOAP=${WORKSPACE_INSTALL_SOAP}
2019-02-26 21:14:32 +08:00
- INSTALL_XSL=${WORKSPACE_INSTALL_XSL}
2017-09-29 20:56:28 +08:00
- INSTALL_LDAP=${WORKSPACE_INSTALL_LDAP}
2017-11-06 18:12:02 +08:00
- INSTALL_IMAP=${WORKSPACE_INSTALL_IMAP}
2017-03-17 14:57:54 +08:00
- INSTALL_MONGO=${WORKSPACE_INSTALL_MONGO}
- INSTALL_AMQP=${WORKSPACE_INSTALL_AMQP}
- INSTALL_CASSANDRA=${WORKSPACE_INSTALL_CASSANDRA}
- INSTALL_GEARMAN=${WORKSPACE_INSTALL_GEARMAN}
2017-08-31 21:41:01 +08:00
- INSTALL_PHPREDIS=${WORKSPACE_INSTALL_PHPREDIS}
- INSTALL_MSSQL=${WORKSPACE_INSTALL_MSSQL}
2017-03-17 14:57:54 +08:00
- INSTALL_NODE=${WORKSPACE_INSTALL_NODE}
- NPM_REGISTRY=${WORKSPACE_NPM_REGISTRY}
2017-03-17 14:57:54 +08:00
- INSTALL_YARN=${WORKSPACE_INSTALL_YARN}
- INSTALL_NPM_GULP=${WORKSPACE_INSTALL_NPM_GULP}
- INSTALL_NPM_BOWER=${WORKSPACE_INSTALL_NPM_BOWER}
- INSTALL_NPM_VUE_CLI=${WORKSPACE_INSTALL_NPM_VUE_CLI}
- INSTALL_NPM_ANGULAR_CLI=${WORKSPACE_INSTALL_NPM_ANGULAR_CLI}
2017-03-17 14:57:54 +08:00
- INSTALL_DRUSH=${WORKSPACE_INSTALL_DRUSH}
- INSTALL_WP_CLI=${WORKSPACE_INSTALL_WP_CLI}
2017-08-19 22:58:40 +08:00
- INSTALL_DRUPAL_CONSOLE=${WORKSPACE_INSTALL_DRUPAL_CONSOLE}
2017-05-07 22:54:55 +08:00
- INSTALL_AEROSPIKE=${WORKSPACE_INSTALL_AEROSPIKE}
- INSTALL_V8JS=${WORKSPACE_INSTALL_V8JS}
2017-03-17 14:57:54 +08:00
- COMPOSER_GLOBAL_INSTALL=${WORKSPACE_COMPOSER_GLOBAL_INSTALL}
- COMPOSER_AUTH=${WORKSPACE_COMPOSER_AUTH}
- COMPOSER_REPO_PACKAGIST=${WORKSPACE_COMPOSER_REPO_PACKAGIST}
2017-03-17 14:57:54 +08:00
- INSTALL_WORKSPACE_SSH=${WORKSPACE_INSTALL_WORKSPACE_SSH}
- INSTALL_LARAVEL_ENVOY=${WORKSPACE_INSTALL_LARAVEL_ENVOY}
- INSTALL_LARAVEL_INSTALLER=${WORKSPACE_INSTALL_LARAVEL_INSTALLER}
- INSTALL_DEPLOYER=${WORKSPACE_INSTALL_DEPLOYER}
- INSTALL_PRESTISSIMO=${WORKSPACE_INSTALL_PRESTISSIMO}
- INSTALL_LINUXBREW=${WORKSPACE_INSTALL_LINUXBREW}
2017-03-17 14:57:54 +08:00
- INSTALL_MC=${WORKSPACE_INSTALL_MC}
- INSTALL_SYMFONY=${WORKSPACE_INSTALL_SYMFONY}
- INSTALL_PYTHON=${WORKSPACE_INSTALL_PYTHON}
2017-07-08 18:58:05 +08:00
- INSTALL_IMAGE_OPTIMIZERS=${WORKSPACE_INSTALL_IMAGE_OPTIMIZERS}
2017-09-05 07:36:24 +08:00
- INSTALL_IMAGEMAGICK=${WORKSPACE_INSTALL_IMAGEMAGICK}
- INSTALL_TERRAFORM=${WORKSPACE_INSTALL_TERRAFORM}
Install Dependencies to Run Dusk Tests **Why we need this change?** Currently we are unable to run Dusk (Browser) tests in workspace container. This change, is to allow us to install all dependencies needed to run Dust test which consists of 1. Linux packages such as xvfb (x-virtual frame buffer to run browser in headless container) and etc. 2. Chrome browser. 3. Chrome driver. To install the Dusk dependencies. 1. Update `WORKSPACE_INSTALL_DUSK_DEPS` to true. 2. Run `docker-compose build workspace`. I've also added couple of aliases to facilitate the preparation of test environment. 1. xvfb = `Xvfb -ac :0 -screen 0 1024x768x16 &` (run x-virtual frame buffer in the background) 2. serve = `php artisan serve --quiet &` (run laravel app in the background) Once those are installed, we will need to update the default chrome driver argument in Laravel 5.5 from `--headless` to `sandbox`. Below are the steps to run Dusk in workspace. 1. `docker-compose run workspace bash` (get into workspace). 2. `laravel new dusk-test` (generate new lavarel app for testing purpose). 3. `cd dusk-test` (change directory to newly generate app folder). 4. `composer install --dev laravel/dusk` (install dusk via composer). 5. `php artisan dusk:install` (generate dusk files). 6. `sed -i '/APP_URL/d' .env` (remove APP_URL entry in .env) 7. `echo 'APP_URL=localhost:8000' >> .env` (add new APP_URL entry in .env) 8. `sed -i--'s/headless/no-sandbox/g' tests/DuskTestCase.php` (replace the default chrome driver argument). 9. `xvfb` (alias to run Xvfb instance in the background). 10. `serve` (alias to run laravel app in the background). 11. `dusk` (alias to run Dusk test).
2017-09-28 17:59:16 +08:00
- INSTALL_DUSK_DEPS=${WORKSPACE_INSTALL_DUSK_DEPS}
- INSTALL_PG_CLIENT=${WORKSPACE_INSTALL_PG_CLIENT}
- INSTALL_PHALCON=${WORKSPACE_INSTALL_PHALCON}
2018-01-09 11:25:57 +08:00
- INSTALL_SWOOLE=${WORKSPACE_INSTALL_SWOOLE}
- INSTALL_TAINT=${WORKSPACE_INSTALL_TAINT}
- INSTALL_LIBPNG=${WORKSPACE_INSTALL_LIBPNG}
- INSTALL_IONCUBE=${WORKSPACE_INSTALL_IONCUBE}
2018-11-27 16:59:14 +08:00
- INSTALL_MYSQL_CLIENT=${WORKSPACE_INSTALL_MYSQL_CLIENT}
- INSTALL_PING=${WORKSPACE_INSTALL_PING}
- INSTALL_SSHPASS=${WORKSPACE_INSTALL_SSHPASS}
- INSTALL_MAILPARSE=${WORKSPACE_INSTALL_MAILPARSE}
2017-03-17 14:57:54 +08:00
- PUID=${WORKSPACE_PUID}
- PGID=${WORKSPACE_PGID}
- CHROME_DRIVER_VERSION=${WORKSPACE_CHROME_DRIVER_VERSION}
2017-03-17 14:57:54 +08:00
- NODE_VERSION=${WORKSPACE_NODE_VERSION}
2017-03-23 17:32:11 +08:00
- YARN_VERSION=${WORKSPACE_YARN_VERSION}
- DRUSH_VERSION=${WORKSPACE_DRUSH_VERSION}
2017-03-17 14:57:54 +08:00
- TZ=${WORKSPACE_TIMEZONE}
2017-04-21 06:02:54 +08:00
- BLACKFIRE_CLIENT_ID=${BLACKFIRE_CLIENT_ID}
- BLACKFIRE_CLIENT_TOKEN=${BLACKFIRE_CLIENT_TOKEN}
2019-03-28 09:54:51 +08:00
- INSTALL_POWERLINE=${WORKSPACE_INSTALL_POWERLINE}
- INSTALL_FFMPEG=${WORKSPACE_INSTALL_FFMPEG}
- INSTALL_GNU_PARALLEL=${WORKSPACE_INSTALL_GNU_PARALLEL}
- http_proxy
- https_proxy
- no_proxy
2018-04-05 21:43:22 +08:00
volumes:
- ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER}${APP_CODE_CONTAINER_FLAG}
2017-03-17 14:57:54 +08:00
extra_hosts:
- "dockerhost:${DOCKER_HOST_IP}"
2017-03-17 14:57:54 +08:00
ports:
- "${WORKSPACE_SSH_PORT}:22"
2017-03-17 14:57:54 +08:00
tty: true
environment:
- PHP_IDE_CONFIG=${PHP_IDE_CONFIG}
- DOCKER_HOST=tcp://docker-in-docker:2375
networks:
- frontend
- backend
links:
- docker-in-docker
2018-04-05 21:43:22 +08:00
### PHP-FPM ##############################################
php-fpm:
2017-03-17 14:57:54 +08:00
build:
context: ./php-fpm
args:
- CHANGE_SOURCE=${CHANGE_SOURCE}
- LARADOCK_PHP_VERSION=${PHP_VERSION}
- LARADOCK_PHALCON_VERSION=${PHALCON_VERSION}
2017-03-17 14:57:54 +08:00
- INSTALL_XDEBUG=${PHP_FPM_INSTALL_XDEBUG}
- INSTALL_PHPDBG=${PHP_FPM_INSTALL_PHPDBG}
2017-04-21 06:02:54 +08:00
- INSTALL_BLACKFIRE=${INSTALL_BLACKFIRE}
- INSTALL_SSH2=${PHP_FPM_INSTALL_SSH2}
2017-03-17 14:57:54 +08:00
- INSTALL_SOAP=${PHP_FPM_INSTALL_SOAP}
2019-02-26 21:14:32 +08:00
- INSTALL_XSL=${PHP_FPM_INSTALL_XSL}
2018-02-14 02:19:07 +08:00
- INSTALL_IMAP=${PHP_FPM_INSTALL_IMAP}
2017-03-17 14:57:54 +08:00
- INSTALL_MONGO=${PHP_FPM_INSTALL_MONGO}
- INSTALL_AMQP=${PHP_FPM_INSTALL_AMQP}
- INSTALL_CASSANDRA=${PHP_FPM_INSTALL_CASSANDRA}
- INSTALL_GEARMAN=${PHP_FPM_INSTALL_GEARMAN}
- INSTALL_MSSQL=${PHP_FPM_INSTALL_MSSQL}
2017-03-17 14:57:54 +08:00
- INSTALL_BCMATH=${PHP_FPM_INSTALL_BCMATH}
2017-12-27 18:56:26 +08:00
- INSTALL_GMP=${PHP_FPM_INSTALL_GMP}
2017-03-17 14:57:54 +08:00
- INSTALL_PHPREDIS=${PHP_FPM_INSTALL_PHPREDIS}
- INSTALL_MEMCACHED=${PHP_FPM_INSTALL_MEMCACHED}
- INSTALL_OPCACHE=${PHP_FPM_INSTALL_OPCACHE}
- INSTALL_EXIF=${PHP_FPM_INSTALL_EXIF}
2017-05-07 22:54:55 +08:00
- INSTALL_AEROSPIKE=${PHP_FPM_INSTALL_AEROSPIKE}
2017-03-17 14:57:54 +08:00
- INSTALL_MYSQLI=${PHP_FPM_INSTALL_MYSQLI}
- INSTALL_PGSQL=${PHP_FPM_INSTALL_PGSQL}
- INSTALL_PG_CLIENT=${PHP_FPM_INSTALL_PG_CLIENT}
- INSTALL_POSTGIS=${PHP_FPM_INSTALL_POSTGIS}
2017-03-17 14:57:54 +08:00
- INSTALL_INTL=${PHP_FPM_INSTALL_INTL}
2017-04-11 22:45:20 +08:00
- INSTALL_GHOSTSCRIPT=${PHP_FPM_INSTALL_GHOSTSCRIPT}
2017-05-12 19:23:03 +08:00
- INSTALL_LDAP=${PHP_FPM_INSTALL_LDAP}
- INSTALL_PHALCON=${PHP_FPM_INSTALL_PHALCON}
- INSTALL_SWOOLE=${PHP_FPM_INSTALL_SWOOLE}
- INSTALL_TAINT=${PHP_FPM_INSTALL_TAINT}
2017-07-08 18:58:05 +08:00
- INSTALL_IMAGE_OPTIMIZERS=${PHP_FPM_INSTALL_IMAGE_OPTIMIZERS}
2017-09-06 04:36:30 +08:00
- INSTALL_IMAGEMAGICK=${PHP_FPM_INSTALL_IMAGEMAGICK}
- INSTALL_CALENDAR=${PHP_FPM_INSTALL_CALENDAR}
- INSTALL_FAKETIME=${PHP_FPM_INSTALL_FAKETIME}
- INSTALL_IONCUBE=${PHP_FPM_INSTALL_IONCUBE}
2019-01-08 15:30:12 +08:00
- INSTALL_APCU=${PHP_FPM_INSTALL_APCU}
- INSTALL_YAML=${PHP_FPM_INSTALL_YAML}
- INSTALL_RDKAFKA=${PHP_FPM_INSTALL_RDKAFKA}
- INSTALL_ADDITIONAL_LOCALES=${PHP_FPM_INSTALL_ADDITIONAL_LOCALES}
2019-02-22 18:30:05 +08:00
- INSTALL_MYSQL_CLIENT=${PHP_FPM_INSTALL_MYSQL_CLIENT}
- INSTALL_PING=${PHP_FPM_INSTALL_PING}
- INSTALL_SSHPASS=${PHP_FPM_INSTALL_SSHPASS}
- INSTALL_MAILPARSE=${PHP_FPM_INSTALL_MAILPARSE}
2019-07-23 12:08:56 +08:00
- INSTALL_PCNTL=${PHP_FPM_INSTALL_PCNTL}
- ADDITIONAL_LOCALES=${PHP_FPM_ADDITIONAL_LOCALES}
- INSTALL_FFMPEG=${PHP_FPM_FFMPEG}
- INSTALL_XHPROF=${PHP_FPM_INSTALL_XHPROF}
- http_proxy
- https_proxy
- no_proxy
2017-04-16 19:33:27 +08:00
volumes:
- ./php-fpm/php${PHP_VERSION}.ini:/usr/local/etc/php/php.ini
- ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER}${APP_CODE_CONTAINER_FLAG}
2017-03-17 14:57:54 +08:00
expose:
- "9000"
extra_hosts:
- "dockerhost:${DOCKER_HOST_IP}"
environment:
- PHP_IDE_CONFIG=${PHP_IDE_CONFIG}
- DOCKER_HOST=tcp://docker-in-docker:2375
- FAKETIME=${PHP_FPM_FAKETIME}
depends_on:
- workspace
networks:
- backend
links:
- docker-in-docker
2018-04-05 21:43:22 +08:00
### PHP Worker ############################################
php-worker:
2017-03-18 08:52:45 +08:00
build:
context: ./php-worker
args:
- PHP_VERSION=${PHP_VERSION}
- PHALCON_VERSION=${PHALCON_VERSION}
- INSTALL_PGSQL=${PHP_WORKER_INSTALL_PGSQL}
- INSTALL_BCMATH=${PHP_WORKER_INSTALL_BCMATH}
- INSTALL_PHALCON=${PHP_WORKER_INSTALL_PHALCON}
2018-11-13 20:55:15 +08:00
- INSTALL_SOAP=${PHP_WORKER_INSTALL_SOAP}
- INSTALL_ZIP_ARCHIVE=${PHP_WORKER_INSTALL_ZIP_ARCHIVE}
- INSTALL_MYSQL_CLIENT=${PHP_WORKER_INSTALL_MYSQL_CLIENT}
- INSTALL_AMQP=${PHP_WORKER_INSTALL_AMQP}
- INSTALL_CASSANDRA=${PHP_WORKER_INSTALL_CASSANDRA}
- INSTALL_GEARMAN=${PHP_WORKER_INSTALL_GEARMAN}
- INSTALL_GHOSTSCRIPT=${PHP_WORKER_INSTALL_GHOSTSCRIPT}
2019-03-15 10:17:55 +08:00
- INSTALL_SWOOLE=${PHP_WORKER_INSTALL_SWOOLE}
- INSTALL_TAINT=${PHP_WORKER_INSTALL_TAINT}
- INSTALL_FFMPEG=${PHP_WORKER_INSTALL_FFMPEG}
- INSTALL_GMP=${PHP_WORKER_INSTALL_GMP}
2019-09-30 17:10:56 +08:00
- INSTALL_REDIS=${PHP_WORKER_INSTALL_REDIS}
2019-01-09 23:54:32 +08:00
- PUID=${PHP_WORKER_PUID}
- PGID=${PHP_WORKER_PGID}
volumes:
- ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER}${APP_CODE_CONTAINER_FLAG}
- ./php-worker/supervisord.d:/etc/supervisord.d
2017-03-18 08:52:45 +08:00
depends_on:
- workspace
extra_hosts:
- "dockerhost:${DOCKER_HOST_IP}"
networks:
- backend
2018-11-23 20:47:26 +08:00
### Laravel Horizon ############################################
laravel-horizon:
build:
context: ./laravel-horizon
args:
- PHP_VERSION=${PHP_VERSION}
- INSTALL_PGSQL=${PHP_FPM_INSTALL_PGSQL}
- INSTALL_BCMATH=${PHP_FPM_INSTALL_BCMATH}
- INSTALL_MEMCACHED=${PHP_FPM_INSTALL_MEMCACHED}
- INSTALL_SOCKETS=${LARAVEL_HORIZON_INSTALL_SOCKETS}
- INSTALL_CASSANDRA=${PHP_FPM_INSTALL_CASSANDRA}
- INSTALL_PHPREDIS=${LARAVEL_HORIZON_INSTALL_PHPREDIS}
2019-12-05 10:46:24 +08:00
- INSTALL_MONGO=${LARAVEL_HORIZON_INSTALL_MONGO}
2018-11-23 20:47:26 +08:00
volumes:
- ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER}
- ./laravel-horizon/supervisord.d:/etc/supervisord.d
depends_on:
- workspace
extra_hosts:
- "dockerhost:${DOCKER_HOST_IP}"
networks:
- backend
2018-04-05 21:43:22 +08:00
### NGINX Server #########################################
nginx:
2017-03-17 14:57:54 +08:00
build:
context: ./nginx
args:
- PHP_UPSTREAM_CONTAINER=${NGINX_PHP_UPSTREAM_CONTAINER}
- PHP_UPSTREAM_PORT=${NGINX_PHP_UPSTREAM_PORT}
- CHANGE_SOURCE=${CHANGE_SOURCE}
- http_proxy
- https_proxy
- no_proxy
2017-03-17 14:57:54 +08:00
volumes:
- ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER}${APP_CODE_CONTAINER_FLAG}
- ${NGINX_HOST_LOG_PATH}:/var/log/nginx
- ${NGINX_SITES_PATH}:/etc/nginx/sites-available
- ${NGINX_SSL_PATH}:/etc/nginx/ssl
2017-03-17 14:57:54 +08:00
ports:
- "${NGINX_HOST_HTTP_PORT}:80"
- "${NGINX_HOST_HTTPS_PORT}:443"
2017-03-17 14:57:54 +08:00
depends_on:
- php-fpm
networks:
- frontend
- backend
2018-04-05 21:43:22 +08:00
### Blackfire ########################################
2017-04-21 06:02:54 +08:00
blackfire:
image: blackfire/blackfire
environment:
- BLACKFIRE_SERVER_ID=${BLACKFIRE_SERVER_ID}
- BLACKFIRE_SERVER_TOKEN=${BLACKFIRE_SERVER_TOKEN}
depends_on:
- php-fpm
networks:
- backend
2018-04-05 21:43:22 +08:00
### Apache Server ########################################
2016-07-28 08:35:58 +08:00
apache2:
2017-03-17 14:57:54 +08:00
build:
context: ./apache2
args:
- PHP_UPSTREAM_CONTAINER=${APACHE_PHP_UPSTREAM_CONTAINER}
- PHP_UPSTREAM_PORT=${APACHE_PHP_UPSTREAM_PORT}
2017-09-18 21:24:48 +08:00
- PHP_UPSTREAM_TIMEOUT=${APACHE_PHP_UPSTREAM_TIMEOUT}
- DOCUMENT_ROOT=${APACHE_DOCUMENT_ROOT}
2017-03-17 14:57:54 +08:00
volumes:
- ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER}${APP_CODE_CONTAINER_FLAG}
2017-03-17 14:57:54 +08:00
- ${APACHE_HOST_LOG_PATH}:/var/log/apache2
2017-06-30 18:22:55 +08:00
- ${APACHE_SITES_PATH}:/etc/apache2/sites-available
2017-03-17 14:57:54 +08:00
ports:
- "${APACHE_HOST_HTTP_PORT}:80"
- "${APACHE_HOST_HTTPS_PORT}:443"
depends_on:
- php-fpm
networks:
- frontend
- backend
2016-07-28 08:35:58 +08:00
2018-04-05 21:43:22 +08:00
### HHVM #################################################
hhvm:
2017-03-17 14:57:54 +08:00
build: ./hhvm
2018-04-05 21:43:22 +08:00
volumes:
- ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER}${APP_CODE_CONTAINER_FLAG}
2017-03-17 14:57:54 +08:00
expose:
- "9000"
depends_on:
- workspace
networks:
- frontend
- backend
2018-04-05 21:43:22 +08:00
### Minio ################################################
minio:
2017-03-17 14:57:54 +08:00
build: ./minio
volumes:
2018-04-05 21:43:22 +08:00
- ${DATA_PATH_HOST}/minio/data:/export
- ${DATA_PATH_HOST}/minio/config:/root/.minio
2017-03-17 14:57:54 +08:00
ports:
- "${MINIO_PORT}:9000"
environment:
2017-03-18 08:52:45 +08:00
- MINIO_ACCESS_KEY=access
- MINIO_SECRET_KEY=secretkey
networks:
- frontend
- backend
2018-04-05 21:43:22 +08:00
### MySQL ################################################
mysql:
2017-03-17 14:57:54 +08:00
build:
context: ./mysql
args:
- MYSQL_VERSION=${MYSQL_VERSION}
2017-04-07 10:25:40 +08:00
environment:
2017-04-07 10:27:15 +08:00
- MYSQL_DATABASE=${MYSQL_DATABASE}
- MYSQL_USER=${MYSQL_USER}
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
- TZ=${WORKSPACE_TIMEZONE}
2017-03-17 14:57:54 +08:00
volumes:
2018-04-05 21:43:22 +08:00
- ${DATA_PATH_HOST}/mysql:/var/lib/mysql
- ${MYSQL_ENTRYPOINT_INITDB}:/docker-entrypoint-initdb.d
2017-03-17 14:57:54 +08:00
ports:
- "${MYSQL_PORT}:3306"
networks:
- backend
2018-04-05 21:43:22 +08:00
### Percona ################################################
percona:
build:
context: ./percona
environment:
- MYSQL_DATABASE=${PERCONA_DATABASE}
- MYSQL_USER=${PERCONA_USER}
- MYSQL_PASSWORD=${PERCONA_PASSWORD}
- MYSQL_ROOT_PASSWORD=${PERCONA_ROOT_PASSWORD}
volumes:
2018-04-05 21:43:22 +08:00
- ${DATA_PATH_HOST}/percona:/var/lib/mysql
- ${PERCONA_ENTRYPOINT_INITDB}:/docker-entrypoint-initdb.d
ports:
- "${PERCONA_PORT}:3306"
networks:
- backend
2018-04-05 21:43:22 +08:00
### MSSQL ################################################
2017-03-26 08:20:24 +08:00
mssql:
build:
context: ./mssql
environment:
- MSSQL_DATABASE=${MSSQL_DATABASE}
- SA_PASSWORD=${MSSQL_PASSWORD}
- ACCEPT_EULA=Y
volumes:
2018-04-05 21:43:22 +08:00
- ${DATA_PATH_HOST}/mssql:/var/opt/mssql
2017-03-26 08:20:24 +08:00
ports:
- "${MSSQL_PORT}:1433"
networks:
- backend
2018-04-05 21:43:22 +08:00
### MariaDB ##############################################
mariadb:
build:
context: ./mariadb
args:
- http_proxy
- https_proxy
- no_proxy
- MARIADB_VERSION=${MARIADB_VERSION}
2017-03-17 14:57:54 +08:00
volumes:
2018-04-05 21:43:22 +08:00
- ${DATA_PATH_HOST}/mariadb:/var/lib/mysql
- ${MARIADB_ENTRYPOINT_INITDB}:/docker-entrypoint-initdb.d
2017-03-17 14:57:54 +08:00
ports:
- "${MARIADB_PORT}:3306"
environment:
- TZ=${WORKSPACE_TIMEZONE}
2017-03-17 14:57:54 +08:00
- MYSQL_DATABASE=${MARIADB_DATABASE}
- MYSQL_USER=${MARIADB_USER}
- MYSQL_PASSWORD=${MARIADB_PASSWORD}
- MYSQL_ROOT_PASSWORD=${MARIADB_ROOT_PASSWORD}
networks:
- backend
2018-04-05 21:43:22 +08:00
### PostgreSQL ###########################################
2016-05-07 09:16:06 +08:00
postgres:
2017-03-17 14:57:54 +08:00
build: ./postgres
volumes:
2018-04-05 21:43:22 +08:00
- ${DATA_PATH_HOST}/postgres:/var/lib/postgresql/data
2018-06-15 04:39:19 +08:00
- ${POSTGRES_ENTRYPOINT_INITDB}:/docker-entrypoint-initdb.d
2017-03-17 14:57:54 +08:00
ports:
- "${POSTGRES_PORT}:5432"
environment:
- POSTGRES_DB=${POSTGRES_DB}
- POSTGRES_USER=${POSTGRES_USER}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- GITLAB_POSTGRES_INIT=${GITLAB_POSTGRES_INIT}
- GITLAB_POSTGRES_USER=${GITLAB_POSTGRES_USER}
- GITLAB_POSTGRES_PASSWORD=${GITLAB_POSTGRES_PASSWORD}
- GITLAB_POSTGRES_DB=${GITLAB_POSTGRES_DB}
- JUPYTERHUB_POSTGRES_INIT=${JUPYTERHUB_POSTGRES_INIT}
- JUPYTERHUB_POSTGRES_USER=${JUPYTERHUB_POSTGRES_USER}
- JUPYTERHUB_POSTGRES_PASSWORD=${JUPYTERHUB_POSTGRES_PASSWORD}
- JUPYTERHUB_POSTGRES_DB=${JUPYTERHUB_POSTGRES_DB}
- SONARQUBE_POSTGRES_INIT=${SONARQUBE_POSTGRES_INIT}
- SONARQUBE_POSTGRES_DB=${SONARQUBE_POSTGRES_DB}
- SONARQUBE_POSTGRES_USER=${SONARQUBE_POSTGRES_USER}
- SONARQUBE_POSTGRES_PASSWORD=${SONARQUBE_POSTGRES_PASSWORD}
- POSTGRES_CONFLUENCE_INIT=${CONFLUENCE_POSTGRES_INIT}
- POSTGRES_CONFLUENCE_DB=${CONFLUENCE_POSTGRES_DB}
- POSTGRES_CONFLUENCE_USER=${CONFLUENCE_POSTGRES_USER}
- POSTGRES_CONFLUENCE_PASSWORD=${CONFLUENCE_POSTGRES_PASSWORD}
networks:
- backend
2016-05-07 09:16:06 +08:00
2018-04-05 21:43:22 +08:00
### PostgreSQL PostGis ###################################
2016-11-08 21:17:23 +08:00
postgres-postgis:
2017-03-17 14:57:54 +08:00
build: ./postgres-postgis
volumes:
2018-04-05 21:43:22 +08:00
- ${DATA_PATH_HOST}/postgres:/var/lib/postgresql/data
2017-03-17 14:57:54 +08:00
ports:
- "${POSTGRES_PORT}:5432"
environment:
- POSTGRES_DB=${POSTGRES_DB}
- POSTGRES_USER=${POSTGRES_USER}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
networks:
- backend
2016-11-08 21:17:23 +08:00
2018-04-05 21:43:22 +08:00
### Neo4j ################################################
2016-05-21 01:35:10 +08:00
neo4j:
2017-03-17 14:57:54 +08:00
build: ./neo4j
ports:
- "7474:7474"
- "1337:1337"
environment:
- NEO4J_AUTH=default:secret
volumes:
2018-04-05 21:43:22 +08:00
- ${DATA_PATH_HOST}/neo4j:/var/lib/neo4j/data
networks:
- backend
2016-05-21 01:35:10 +08:00
2018-04-05 21:43:22 +08:00
### MongoDB ##############################################
mongo:
2017-03-17 14:57:54 +08:00
build: ./mongo
ports:
- "${MONGODB_PORT}:27017"
2017-03-17 14:57:54 +08:00
volumes:
2018-04-05 21:43:22 +08:00
- ${DATA_PATH_HOST}/mongo:/data/db
networks:
- backend
2018-04-05 21:43:22 +08:00
### RethinkDB ##############################################
2016-12-26 22:38:50 +08:00
rethinkdb:
2017-03-17 14:57:54 +08:00
build: ./rethinkdb
ports:
- "${RETHINKDB_PORT}:8080"
2017-03-17 14:57:54 +08:00
volumes:
2018-04-05 21:43:22 +08:00
- ${DATA_PATH_HOST}/rethinkdb:/data/rethinkdb_data
networks:
- backend
2018-04-05 21:43:22 +08:00
### Redis ################################################
redis:
2017-03-17 14:57:54 +08:00
build: ./redis
volumes:
2018-04-05 21:43:22 +08:00
- ${DATA_PATH_HOST}/redis:/data
2017-03-17 14:57:54 +08:00
ports:
- "${REDIS_PORT}:6379"
networks:
- backend
2016-05-14 09:20:20 +08:00
2019-02-16 23:38:18 +08:00
### Redis Cluster ##########################################
redis-cluster:
build: ./redis-cluster
ports:
- "${REDIS_CLUSTER_PORT_RANGE}:7000-7005"
networks:
- backend
2019-01-08 15:29:04 +08:00
### ZooKeeper #########################################
zookeeper:
build: ./zookeeper
volumes:
- ${DATA_PATH_HOST}/zookeeper/data:/data
- ${DATA_PATH_HOST}/zookeeper/datalog:/datalog
ports:
- "${ZOOKEEPER_PORT}:2181"
networks:
- backend
2018-04-05 21:43:22 +08:00
### Aerospike ##########################################
2016-08-20 19:28:45 +08:00
aerospike:
2017-03-17 14:57:54 +08:00
build: ./aerospike
volumes:
2018-04-05 21:43:22 +08:00
- workspace
- ${DATA_PATH_HOST}/aerospike:/opt/aerospike/data
2017-03-17 14:57:54 +08:00
ports:
- "${AEROSPIKE_SERVICE_PORT}:3000"
- "${AEROSPIKE_FABRIC_PORT}:3001"
- "${AEROSPIKE_HEARTBEAT_PORT}:3002"
- "${AEROSPIKE_INFO_PORT}:3003"
environment:
- STORAGE_GB=${AEROSPIKE_STORAGE_GB}
- MEM_GB=${AEROSPIKE_MEM_GB}
- NAMESPACE=${AEROSPIKE_NAMESPACE}
networks:
- backend
2018-04-05 21:43:22 +08:00
### Memcached ############################################
2016-05-14 09:20:20 +08:00
memcached:
2017-03-17 14:57:54 +08:00
build: ./memcached
volumes:
2018-04-05 21:43:22 +08:00
- ${DATA_PATH_HOST}/memcached:/var/lib/memcached
2017-03-17 14:57:54 +08:00
ports:
- "${MEMCACHED_HOST_PORT}:11211"
depends_on:
- php-fpm
networks:
- backend
2018-04-05 21:43:22 +08:00
### Beanstalkd ###########################################
beanstalkd:
2017-03-17 14:57:54 +08:00
build: ./beanstalkd
ports:
- "${BEANSTALKD_HOST_PORT}:11300"
privileged: true
depends_on:
- php-fpm
networks:
- backend
2018-04-05 21:43:22 +08:00
### RabbitMQ #############################################
2016-08-28 16:12:55 +08:00
rabbitmq:
2017-03-17 14:57:54 +08:00
build: ./rabbitmq
ports:
- "${RABBITMQ_NODE_HOST_PORT}:5672"
- "${RABBITMQ_MANAGEMENT_HTTP_HOST_PORT}:15672"
- "${RABBITMQ_MANAGEMENT_HTTPS_HOST_PORT}:15671"
privileged: true
environment:
- RABBITMQ_DEFAULT_USER=${RABBITMQ_DEFAULT_USER}
- RABBITMQ_DEFAULT_PASS=${RABBITMQ_DEFAULT_PASS}
2019-02-09 19:29:25 +08:00
hostname: laradock-rabbitmq
volumes:
- ${DATA_PATH_HOST}/rabbitmq:/var/lib/rabbitmq
2017-03-17 14:57:54 +08:00
depends_on:
- php-fpm
networks:
- backend
2016-08-28 16:12:55 +08:00
### Cassandra ############################################
cassandra:
build: ./cassandra
ports:
- "${CASSANDRA_TRANSPORT_PORT_NUMBER}:7000"
- "${CASSANDRA_JMX_PORT_NUMBER}:7199"
- "${CASSANDRA_CQL_PORT_NUMBER}:9042"
privileged: true
environment:
- CASSANDRA_VERSION=${CASSANDRA_VERSION}
- CASSANDRA_TRANSPORT_PORT_NUMBER=${CASSANDRA_TRANSPORT_PORT_NUMBER}
- CASSANDRA_JMX_PORT_NUMBER=${CASSANDRA_JMX_PORT_NUMBER}
- CASSANDRA_CQL_PORT_NUMBER=${CASSANDRA_CQL_PORT_NUMBER}
- CASSANDRA_USER=${CASSANDRA_USER}
- CASSANDRA_PASSWORD_SEEDER=${CASSANDRA_PASSWORD_SEEDER}
- CASSANDRA_PASSWORD=${CASSANDRA_PASSWORD}
- CASSANDRA_NUM_TOKENS=${CASSANDRA_NUM_TOKENS}
- CASSANDRA_HOST=${CASSANDRA_HOST}
- CASSANDRA_CLUSTER_NAME=${CASSANDRA_CLUSTER_NAME}
- CASSANDRA_SEEDS=${CASSANDRA_SEEDS}
- CASSANDRA_ENDPOINT_SNITCH=${CASSANDRA_ENDPOINT_SNITCH}
- CASSANDRA_ENABLE_RPC=${CASSANDRA_ENABLE_RPC}
- CASSANDRA_DATACENTER=${CASSANDRA_DATACENTER}
- CASSANDRA_RACK=${CASSANDRA_RACK}
hostname: laradock-cassandra
volumes:
- ${DATA_PATH_HOST}/cassandra:/var/lib/cassandra
depends_on:
- php-fpm
networks:
- backend
### Gearman ############################################
gearman:
build: ./gearman
ports:
- "${GEARMAN_PORT}:4730"
privileged: true
environment:
- GEARMAN_VERSION=${GEARMAN_VERSION}
- GEARMAN_VERBOSE=${GEARMAN_VERBOSE}
- GEARMAN_QUEUE_TYPE=${GEARMAN_QUEUE_TYPE}
- GEARMAN_THREADS=${GEARMAN_THREADS}
- GEARMAN_BACKLOG=${GEARMAN_BACKLOG}
- GEARMAN_FILE_DESCRIPTORS=${GEARMAN_FILE_DESCRIPTORS}
- GEARMAN_JOB_RETRIES=${GEARMAN_JOB_RETRIES}
- GEARMAN_ROUND_ROBIN=${GEARMAN_ROUND_ROBIN}
- GEARMAN_WORKER_WAKEUP=${GEARMAN_WORKER_WAKEUP}
- GEARMAN_KEEPALIVE=${GEARMAN_KEEPALIVE}
- GEARMAN_KEEPALIVE_IDLE=${GEARMAN_KEEPALIVE_IDLE}
- GEARMAN_KEEPALIVE_INTERVAL=${GEARMAN_KEEPALIVE_INTERVAL}
- GEARMAN_KEEPALIVE_COUNT=${GEARMAN_KEEPALIVE_COUNT}
- GEARMAN_MYSQL_HOST=${GEARMAN_MYSQL_HOST}
- GEARMAN_MYSQL_PORT=${GEARMAN_MYSQL_PORT}
- GEARMAN_MYSQL_USER=${GEARMAN_MYSQL_USER}
- GEARMAN_MYSQL_PASSWORD=${GEARMAN_MYSQL_PASSWORD}
- GEARMAN_MYSQL_PASSWORD_FILE=${GEARMAN_MYSQL_PASSWORD_FILE}
- GEARMAN_MYSQL_DB=${GEARMAN_MYSQL_DB}
- GEARMAN_MYSQL_TABLE=${GEARMAN_MYSQL_TABLE}
hostname: laradock-gearman
depends_on:
- php-fpm
networks:
- backend
2018-04-05 21:43:22 +08:00
### Beanstalkd Console ###################################
beanstalkd-console:
2017-03-17 14:57:54 +08:00
build: ./beanstalkd-console
ports:
- "${BEANSTALKD_CONSOLE_HOST_PORT}:2080"
2017-03-17 14:57:54 +08:00
depends_on:
- beanstalkd
networks:
- backend
2018-04-05 21:43:22 +08:00
### Caddy Server #########################################
caddy:
2017-03-17 14:57:54 +08:00
build: ./caddy
volumes:
- ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER}${APP_CODE_CONTAINER_FLAG}
- ${CADDY_CONFIG_PATH}:/etc/caddy
- ${CADDY_HOST_LOG_PATH}:/var/log/caddy
2018-04-05 21:43:22 +08:00
- ${DATA_PATH_HOST}:/root/.caddy
ports:
- "${CADDY_HOST_HTTP_PORT}:80"
- "${CADDY_HOST_HTTPS_PORT}:443"
2017-03-17 14:57:54 +08:00
depends_on:
- php-fpm
networks:
- frontend
- backend
2018-04-05 21:43:22 +08:00
### phpMyAdmin ###########################################
phpmyadmin:
2017-03-17 14:57:54 +08:00
build: ./phpmyadmin
environment:
- PMA_ARBITRARY=1
- MYSQL_USER=${PMA_USER}
- MYSQL_PASSWORD=${PMA_PASSWORD}
- MYSQL_ROOT_PASSWORD=${PMA_ROOT_PASSWORD}
ports:
- "${PMA_PORT}:80"
depends_on:
- "${PMA_DB_ENGINE}"
networks:
- frontend
- backend
2018-04-05 21:43:22 +08:00
### Adminer ###########################################
adminer:
2017-05-25 16:44:51 +08:00
build:
context: ./adminer
args:
- INSTALL_MSSQL=${ADM_INSTALL_MSSQL}
ports:
- "${ADM_PORT}:8080"
depends_on:
- php-fpm
2017-03-31 17:42:30 +08:00
networks:
- frontend
2017-04-17 13:40:30 +08:00
- backend
2018-04-05 21:43:22 +08:00
### pgAdmin ##############################################
pgadmin:
image: dpage/pgadmin4:latest
environment:
- "PGADMIN_DEFAULT_EMAIL=${PGADMIN_DEFAULT_EMAIL}"
- "PGADMIN_DEFAULT_PASSWORD=${PGADMIN_DEFAULT_PASSWORD}"
2017-03-17 14:57:54 +08:00
ports:
- "${PGADMIN_PORT}:80"
volumes:
- ${DATA_PATH_HOST}/pgadmin:/var/lib/pgadmin
2017-03-17 14:57:54 +08:00
depends_on:
- postgres
networks:
- frontend
- backend
2017-08-22 17:12:56 +08:00
2018-04-05 21:43:22 +08:00
### ElasticSearch ########################################
elasticsearch:
2017-03-17 14:57:54 +08:00
build: ./elasticsearch
volumes:
2018-04-05 21:43:22 +08:00
- elasticsearch:/usr/share/elasticsearch/data
environment:
- cluster.name=laradock-cluster
- node.name=laradock-node
- bootstrap.memory_lock=true
2017-12-29 00:54:45 +08:00
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
- cluster.initial_master_nodes=laradock-node
ulimits:
memlock:
soft: -1
hard: -1
2017-03-17 14:57:54 +08:00
ports:
- "${ELASTICSEARCH_HOST_HTTP_PORT}:9200"
- "${ELASTICSEARCH_HOST_TRANSPORT_PORT}:9300"
depends_on:
- php-fpm
networks:
- frontend
- backend
2017-03-17 14:57:54 +08:00
### Logstash ##############################################
logstash:
build: ./logstash
volumes:
- './logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml'
- './logstash/pipeline:/usr/share/logstash/pipeline'
ports:
- '5001:5001'
environment:
LS_JAVA_OPTS: '-Xmx1g -Xms1g'
env_file:
- .env
networks:
- frontend
- backend
depends_on:
- elasticsearch
2018-04-05 21:43:22 +08:00
### Kibana ##############################################
kibana:
build: ./kibana
ports:
- "${KIBANA_HTTP_PORT}:5601"
depends_on:
- elasticsearch
networks:
- frontend
- backend
2018-04-05 21:43:22 +08:00
### Certbot #########################################
2017-03-17 14:57:54 +08:00
certbot:
build:
context: ./certbot
volumes:
- ./data/certbot/certs/:/var/certs
2018-11-22 08:09:48 +08:00
- ./certbot/letsencrypt/:/var/www/letsencrypt
2017-03-17 14:57:54 +08:00
environment:
- CN="fake.domain.com"
- EMAIL="fake.email@gmail.com"
networks:
- frontend
2017-03-17 14:57:54 +08:00
2018-04-05 21:43:22 +08:00
### Mailhog ################################################
2017-03-17 14:57:54 +08:00
mailhog:
build: ./mailhog
ports:
- "1025:1025"
- "8025:8025"
networks:
- frontend
- backend
2017-03-17 14:57:54 +08:00
2018-04-05 21:43:22 +08:00
### MailDev ##############################################
2017-10-15 02:01:16 +08:00
maildev:
build: ./maildev
ports:
- "${MAILDEV_HTTP_PORT}:80"
- "${MAILDEV_SMTP_PORT}:25"
networks:
- frontend
- backend
2018-04-05 21:43:22 +08:00
### Selenium ###############################################
selenium:
2017-03-17 14:57:54 +08:00
build: ./selenium
ports:
- "${SELENIUM_PORT}:4444"
volumes:
- /dev/shm:/dev/shm
networks:
- frontend
2018-04-05 21:43:22 +08:00
### Varnish ##########################################
proxy:
build: ./varnish
expose:
- ${VARNISH_PORT}
environment:
- VARNISH_CONFIG=${VARNISH_CONFIG}
- CACHE_SIZE=${VARNISH_PROXY1_CACHE_SIZE}
- VARNISHD_PARAMS=${VARNISHD_PARAMS}
- VARNISH_PORT=${VARNISH_PORT}
- BACKEND_HOST=${VARNISH_PROXY1_BACKEND_HOST}
- BACKEND_PORT=${VARNISH_BACKEND_PORT}
- VARNISH_SERVER=${VARNISH_PROXY1_SERVER}
links:
- workspace
networks:
- frontend
proxy2:
build: ./varnish
expose:
- ${VARNISH_PORT}
environment:
- VARNISH_CONFIG=${VARNISH_CONFIG}
- CACHE_SIZE=${VARNISH_PROXY2_CACHE_SIZE}
- VARNISHD_PARAMS=${VARNISHD_PARAMS}
- VARNISH_PORT=${VARNISH_PORT}
- BACKEND_HOST=${VARNISH_PROXY2_BACKEND_HOST}
- BACKEND_PORT=${VARNISH_BACKEND_PORT}
- VARNISH_SERVER=${VARNISH_PROXY2_SERVER}
links:
- workspace
networks:
- frontend
2018-04-05 21:43:22 +08:00
### HAProxy ####################################
2017-12-20 08:09:19 +08:00
haproxy:
build: ./haproxy
ports:
2017-03-26 09:13:14 +08:00
- "${HAPROXY_HOST_HTTP_PORT}:8085"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
links:
- proxy
- proxy2
### Jenkins ###################################################
jenkins:
build: ./jenkins
environment:
JAVA_OPTS: "-Djava.awt.headless=true"
ports:
- "${JENKINS_HOST_SLAVE_AGENT_PORT}:50000"
- "${JENKINS_HOST_HTTP_PORT}:8080"
privileged: true
volumes:
- ${JENKINS_HOME}:/var/jenkins_home
- /var/run/docker.sock:/var/run/docker.sock
2017-05-08 07:20:43 +08:00
networks:
- frontend
- backend
2018-04-05 21:43:22 +08:00
### Grafana ################################################
2017-10-18 20:38:10 +08:00
grafana:
build:
context: ./grafana
volumes:
2018-04-05 21:43:22 +08:00
- ${DATA_PATH_HOST}/grafana:/var/lib/grafana
2017-10-18 20:38:10 +08:00
ports:
- "${GRAFANA_PORT}:3000"
networks:
- backend
### Graylog #######################################
graylog:
build: ./graylog
environment:
- GRAYLOG_PASSWORD_SECRET=${GRAYLOG_PASSWORD}
- GRAYLOG_ROOT_PASSWORD_SHA2=${GRAYLOG_SHA256_PASSWORD}
- GRAYLOG_HTTP_EXTERNAL_URI=http://127.0.0.1:${GRAYLOG_PORT}/
links:
- mongo
- elasticsearch
depends_on:
- mongo
- elasticsearch
ports:
# Graylog web interface and REST API
- ${GRAYLOG_PORT}:9000
# Syslog TCP
- ${GRAYLOG_SYSLOG_TCP_PORT}:514
# Syslog UDP
- ${GRAYLOG_SYSLOG_UDP_PORT}:514/udp
# GELF TCP
- ${GRAYLOG_GELF_TCP_PORT}:12201
# GELF UDP
- ${GRAYLOG_GELF_UDP_PORT}:12201/udp
user: root
volumes:
- ./graylog/config:/usr/share/graylog/data/config
networks:
- backend
2017-05-27 21:24:50 +08:00
### Laravel Echo Server #######################################
laravel-echo-server:
build:
context: ./laravel-echo-server
volumes:
- ./laravel-echo-server/laravel-echo-server.json:/app/laravel-echo-server.json:ro
ports:
- "${LARAVEL_ECHO_SERVER_PORT}:6001"
links:
- redis
networks:
- frontend
- backend
2018-04-05 21:43:22 +08:00
### Solr ################################################
2018-02-11 18:36:57 +08:00
solr:
build:
context: ./solr
args:
- SOLR_VERSION=${SOLR_VERSION}
- SOLR_DATAIMPORTHANDLER_MYSQL=${SOLR_DATAIMPORTHANDLER_MYSQL}
2018-11-13 20:58:00 +08:00
- SOLR_DATAIMPORTHANDLER_MSSQL=${SOLR_DATAIMPORTHANDLER_MSSQL}
2018-02-11 18:36:57 +08:00
volumes:
2018-04-05 21:43:22 +08:00
- ${DATA_PATH_HOST}/solr:/opt/solr/server/solr/mycores
2018-02-11 18:36:57 +08:00
ports:
- "${SOLR_PORT}:8983"
networks:
- backend
2018-09-16 20:21:13 +08:00
### Thumbor #########################################
thumbor:
build: ./thumbor
volumes:
- ${DATA_PATH_HOST}/thumbor/data:/data
- ${DATA_PATH_HOST}/thumbor/data:/logs
2018-09-16 20:21:13 +08:00
ports:
- "${THUMBOR_PORT}:8000"
environment:
- THUMBOR_LOG_FORMAT=${THUMBOR_LOG_FORMAT}
- THUMBOR_LOG_DATE_FORMAT=${THUMBOR_LOG_DATE_FORMAT}
- MAX_WIDTH=${MAX_WIDTH}
- MAX_HEIGHT=${MAX_HEIGHT}
- MIN_WIDTH=${MIN_WIDTH}
- MIN_HEIGHT=${MIN_HEIGHT}
- ALLOWED_SOURCES=${ALLOWED_SOURCES}
- QUALITY=${QUALITY}
- WEBP_QUALITY=${WEBP_QUALITY}
- PNG_COMPRESSION_LEVEL=${PNG_COMPRESSION_LEVEL}
- AUTO_WEBP=${AUTO_WEBP}
- MAX_AGE=${MAX_AGE}
- MAX_AGE_TEMP_IMAGE=${MAX_AGE_TEMP_IMAGE}
- RESPECT_ORIENTATION=${RESPECT_ORIENTATION}
- IGNORE_SMART_ERRORS=${IGNORE_SMART_ERRORS}
- PRESERVE_EXIF_INFO=${PRESERVE_EXIF_INFO}
- ALLOW_ANIMATED_GIFS=${ALLOW_ANIMATED_GIFS}
- USE_GIFSICLE_ENGINE=${USE_GIFSICLE_ENGINE}
- USE_BLACKLIST=${USE_BLACKLIST}
- LOADER=${LOADER}
- STORAGE=${STORAGE}
- AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID}
- AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY}
- RESULT_STORAGE=${RESULT_STORAGE}
- ENGINE=${ENGINE}
- SECURITY_KEY=${SECURITY_KEY}
- ALLOW_UNSAFE_URL=${ALLOW_UNSAFE_URL}
- ALLOW_OLD_URLS=${ALLOW_OLD_URLS}
- FILE_LOADER_ROOT_PATH=${FILE_LOADER_ROOT_PATH}
- HTTP_LOADER_CONNECT_TIMEOUT=${HTTP_LOADER_CONNECT_TIMEOUT}
- HTTP_LOADER_REQUEST_TIMEOUT=${HTTP_LOADER_REQUEST_TIMEOUT}
- HTTP_LOADER_FOLLOW_REDIRECTS=${HTTP_LOADER_FOLLOW_REDIRECTS}
- HTTP_LOADER_MAX_REDIRECTS=${HTTP_LOADER_MAX_REDIRECTS}
- HTTP_LOADER_FORWARD_USER_AGENT=${HTTP_LOADER_FORWARD_USER_AGENT}
- HTTP_LOADER_DEFAULT_USER_AGENT=${HTTP_LOADER_DEFAULT_USER_AGENT}
- HTTP_LOADER_PROXY_HOST=${HTTP_LOADER_PROXY_HOST}
- HTTP_LOADER_PROXY_PORT=${HTTP_LOADER_PROXY_PORT}
- HTTP_LOADER_PROXY_USERNAME=${HTTP_LOADER_PROXY_USERNAME}
- HTTP_LOADER_PROXY_PASSWORD=${HTTP_LOADER_PROXY_PASSWORD}
- HTTP_LOADER_CA_CERTS=${HTTP_LOADER_CA_CERTS}
- HTTP_LOADER_VALIDATE_CERTS=${HTTP_LOADER_VALIDATE_CERTS}
- HTTP_LOADER_CLIENT_KEY=${HTTP_LOADER_CLIENT_KEY}
- HTTP_LOADER_CLIENT_CERT=${HTTP_LOADER_CLIENT_CERT}
- HTTP_LOADER_CURL_ASYNC_HTTP_CLIENT=${HTTP_LOADER_CURL_ASYNC_HTTP_CLIENT}
- STORAGE_EXPIRATION_SECONDS=${STORAGE_EXPIRATION_SECONDS}
- STORES_CRYPTO_KEY_FOR_EACH_IMAGE=${STORES_CRYPTO_KEY_FOR_EACH_IMAGE}
- FILE_STORAGE_ROOT_PATH=${FILE_STORAGE_ROOT_PATH}
- UPLOAD_MAX_SIZE=${UPLOAD_MAX_SIZE}
- UPLOAD_ENABLED=${UPLOAD_ENABLED}
- UPLOAD_PHOTO_STORAGE=${UPLOAD_PHOTO_STORAGE}
- UPLOAD_DELETE_ALLOWED=${UPLOAD_DELETE_ALLOWED}
- UPLOAD_PUT_ALLOWED=${UPLOAD_PUT_ALLOWED}
- UPLOAD_DEFAULT_FILENAME=${UPLOAD_DEFAULT_FILENAME}
- MONGO_STORAGE_SERVER_HOST=${MONGO_STORAGE_SERVER_HOST}
- MONGO_STORAGE_SERVER_PORT=${MONGO_STORAGE_SERVER_PORT}
- MONGO_STORAGE_SERVER_DB=${MONGO_STORAGE_SERVER_DB}
- MONGO_STORAGE_SERVER_COLLECTION=${MONGO_STORAGE_SERVER_COLLECTION}
- REDIS_STORAGE_SERVER_HOST=${REDIS_STORAGE_SERVER_HOST}
- REDIS_STORAGE_SERVER_PORT=${REDIS_STORAGE_SERVER_PORT}
- REDIS_STORAGE_SERVER_DB=${REDIS_STORAGE_SERVER_DB}
- REDIS_STORAGE_SERVER_PASSWORD=${REDIS_STORAGE_SERVER_PASSWORD}
- REDIS_RESULT_STORAGE_SERVER_HOST=${REDIS_RESULT_STORAGE_SERVER_HOST}
- REDIS_RESULT_STORAGE_SERVER_PORT=${REDIS_RESULT_STORAGE_SERVER_PORT}
- REDIS_RESULT_STORAGE_SERVER_DB=${REDIS_RESULT_STORAGE_SERVER_DB}
- REDIS_RESULT_STORAGE_SERVER_PASSWORD=${REDIS_RESULT_STORAGE_SERVER_PASSWORD}
- MEMCACHE_STORAGE_SERVERS=${MEMCACHE_STORAGE_SERVERS}
- MIXED_STORAGE_FILE_STORAGE=${MIXED_STORAGE_FILE_STORAGE}
- MIXED_STORAGE_CRYPTO_STORAGE=${MIXED_STORAGE_CRYPTO_STORAGE}
- MIXED_STORAGE_DETECTOR_STORAGE=${MIXED_STORAGE_DETECTOR_STORAGE}
- META_CALLBACK_NAME=${META_CALLBACK_NAME}
- DETECTORS=${DETECTORS}
- FACE_DETECTOR_CASCADE_FILE=${FACE_DETECTOR_CASCADE_FILE}
- OPTIMIZERS=${OPTIMIZERS}
- JPEGTRAN_PATH=${JPEGTRAN_PATH}
- PROGRESSIVE_JPEG=${PROGRESSIVE_JPEG}
- RESULT_STORAGE_EXPIRATION_SECONDS=${RESULT_STORAGE_EXPIRATION_SECONDS}
- RESULT_STORAGE_FILE_STORAGE_ROOT_PATH=${RESULT_STORAGE_FILE_STORAGE_ROOT_PATH}
- RESULT_STORAGE_STORES_UNSAFE=${RESULT_STORAGE_STORES_UNSAFE}
- REDIS_QUEUE_SERVER_HOST=${REDIS_QUEUE_SERVER_HOST}
- REDIS_QUEUE_SERVER_PORT=${REDIS_QUEUE_SERVER_PORT}
- REDIS_QUEUE_SERVER_DB=${REDIS_QUEUE_SERVER_DB}
- REDIS_QUEUE_SERVER_PASSWORD=${REDIS_QUEUE_SERVER_PASSWORD}
- SQS_QUEUE_KEY_ID=${SQS_QUEUE_KEY_ID}
- SQS_QUEUE_KEY_SECRET=${SQS_QUEUE_KEY_SECRET}
- SQS_QUEUE_REGION=${SQS_QUEUE_REGION}
- USE_CUSTOM_ERROR_HANDLING=${USE_CUSTOM_ERROR_HANDLING}
- ERROR_HANDLER_MODULE=${ERROR_HANDLER_MODULE}
- ERROR_FILE_LOGGER=${ERROR_FILE_LOGGER}
- ERROR_FILE_NAME_USE_CONTEXT=${ERROR_FILE_NAME_USE_CONTEXT}
- SENTRY_DSN_URL=${SENTRY_DSN_URL}
- TC_AWS_REGION=${TC_AWS_REGION}
- TC_AWS_ENDPOINT=${TC_AWS_ENDPOINT}
- TC_AWS_STORAGE_BUCKET=${TC_AWS_STORAGE_BUCKET}
- TC_AWS_STORAGE_ROOT_PATH=${TC_AWS_STORAGE_ROOT_PATH}
- TC_AWS_LOADER_BUCKET=${TC_AWS_LOADER_BUCKET}
- TC_AWS_LOADER_ROOT_PATH=${TC_AWS_LOADER_ROOT_PATH}
- TC_AWS_RESULT_STORAGE_BUCKET=${TC_AWS_RESULT_STORAGE_BUCKET}
- TC_AWS_RESULT_STORAGE_ROOT_PATH=${TC_AWS_RESULT_STORAGE_ROOT_PATH}
- TC_AWS_STORAGE_SSE=${TC_AWS_STORAGE_SSE}
- TC_AWS_STORAGE_RRS=${TC_AWS_STORAGE_RRS}
- TC_AWS_ENABLE_HTTP_LOADER=${TC_AWS_ENABLE_HTTP_LOADER}
- TC_AWS_ALLOWED_BUCKETS=${TC_AWS_ALLOWED_BUCKETS}
- TC_AWS_STORE_METADATA=${TC_AWS_STORE_METADATA}
networks:
- frontend
- backend
2018-04-05 21:43:22 +08:00
### AWS EB-CLI ################################################
2017-09-12 04:13:44 +08:00
aws:
build:
2019-07-16 02:47:50 +08:00
context: ./aws-eb-cli
2018-04-05 21:43:22 +08:00
volumes:
- ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER}${APP_CODE_CONTAINER_FLAG}
2017-09-12 04:13:44 +08:00
depends_on:
- workspace
tty: true
2018-05-27 17:39:41 +08:00
### Portainer ################################################
portainer:
build:
context: ./portainer
volumes:
- ${DATA_PATH_HOST}/portainer_data:/data
- /var/run/docker.sock:/var/run/docker.sock
2018-07-13 11:33:41 +08:00
extra_hosts:
- "dockerhost:${DOCKER_HOST_IP}"
2018-05-27 17:39:41 +08:00
ports:
- 9010:9000
2018-07-18 21:20:43 +08:00
networks:
- backend
### Gitlab ################################################
gitlab:
build:
context: ./gitlab
environment:
GITLAB_OMNIBUS_CONFIG: |
2019-02-22 18:30:05 +08:00
external_url '${GITLAB_DOMAIN_NAME}'
redis['enable'] = false
nginx['listen_https'] = false
nginx['listen_port'] = 80
nginx['custom_gitlab_server_config'] = "set_real_ip_from 172.0.0.0/8;\nreal_ip_header X-Real-IP;\nreal_ip_recursive on;"
2019-02-22 18:30:05 +08:00
postgresql['enable'] = false
gitlab_rails['trusted_proxies'] = ['caddy','nginx','apache2']
gitlab_rails['redis_host'] = 'redis'
2018-07-18 21:20:43 +08:00
gitlab_rails['redis_database'] = 8
2019-02-22 18:30:05 +08:00
gitlab_rails['db_host'] = '${GITLAB_POSTGRES_HOST}'
gitlab_rails['db_username'] = '${GITLAB_POSTGRES_USER}'
gitlab_rails['db_password'] = '${GITLAB_POSTGRES_PASSWORD}'
gitlab_rails['db_database'] = '${GITLAB_POSTGRES_DB}'
2018-07-18 21:20:43 +08:00
gitlab_rails['initial_root_password'] = '${GITLAB_ROOT_PASSWORD}'
gitlab_rails['gitlab_shell_ssh_port'] = ${GITLAB_HOST_SSH_PORT}
volumes:
- ${DATA_PATH_HOST}/gitlab/config:/etc/gitlab
- ${DATA_PATH_HOST}/gitlab/data:/var/opt/gitlab
- ${GITLAB_HOST_LOG_PATH}:/var/log/gitlab
ports:
- "${GITLAB_HOST_HTTP_PORT}:80"
- "${GITLAB_HOST_HTTPS_PORT}:443"
- "${GITLAB_HOST_SSH_PORT}:22"
networks:
- backend
depends_on:
- redis
- postgres
gitlab-runner:
image: gitlab/gitlab-runner:latest
environment:
- CI_SERVER_URL=${GITLAB_CI_SERVER_URL}
- REGISTRATION_TOKEN=${GITLAB_RUNNER_REGISTRATION_TOKEN}
- RUNNER_NAME=${COMPOSE_PROJECT_NAME}-runner
- REGISTER_NON_INTERACTIVE=${GITLAB_REGISTER_NON_INTERACTIVE}
- RUNNER_EXECUTOR=shell
2018-07-18 21:20:43 +08:00
volumes:
- ${DATA_PATH_HOST}/gitlab/runner:/etc/gitlab-runner
- /var/run/docker.sock:/var/run/docker.sock:rw
2019-02-22 18:30:05 +08:00
2018-07-13 11:35:46 +08:00
### JupyterHub #########################################
jupyterhub:
build:
context: ./jupyterhub
depends_on:
- postgres
- jupyterhub-user
volumes:
- /var/run/docker.sock:/var/run/docker.sock:rw
- ${DATA_PATH_HOST}/jupyterhub/:/data
- ${JUPYTERHUB_CUSTOM_CONFIG}:/jupyterhub_config.py
- ${JUPYTERHUB_USER_DATA}:/user-data
- ${JUPYTERHUB_USER_LIST}:/userlist
networks:
- backend
ports:
- "${JUPYTERHUB_PORT}:80"
environment:
- TERM=xterm
- JUPYTERHUB_USER_DATA=${JUPYTERHUB_USER_DATA}
- JUPYTERHUB_POSTGRES_DB=${JUPYTERHUB_POSTGRES_DB}
- JUPYTERHUB_POSTGRES_USER=${JUPYTERHUB_POSTGRES_USER}
- JUPYTERHUB_POSTGRES_HOST=${JUPYTERHUB_POSTGRES_HOST}
- JUPYTERHUB_POSTGRES_PASSWORD=${JUPYTERHUB_POSTGRES_PASSWORD}
- JUPYTERHUB_OAUTH_CALLBACK_URL=${JUPYTERHUB_OAUTH_CALLBACK_URL}
- JUPYTERHUB_OAUTH_CLIENT_ID=${JUPYTERHUB_OAUTH_CLIENT_ID}
- JUPYTERHUB_OAUTH_CLIENT_SECRET=${JUPYTERHUB_OAUTH_CLIENT_SECRET}
- JUPYTERHUB_LOCAL_NOTEBOOK_IMAGE=${COMPOSE_PROJECT_NAME}_jupyterhub-user
- JUPYTERHUB_ENABLE_NVIDIA=${JUPYTERHUB_ENABLE_NVIDIA}
2018-07-13 11:35:46 +08:00
jupyterhub-user:
build:
context: ./jupyterhub
dockerfile: Dockerfile.user
command: ["sh", "-c", "echo \"build only\""]
2018-07-13 11:33:41 +08:00
### IPython #########################################
ipython-controller:
build:
context: ./ipython
dockerfile: Dockerfile.controller
networks:
- backend
extra_hosts:
- "laradock-ipython:${LARADOCK_IPYTHON_CONTROLLER_IP}"
ports:
- "33327-33338:33327-33338"
ipython-engine:
build:
context: ./ipython
dockerfile: Dockerfile.engine
networks:
- backend
extra_hosts:
- "laradock-ipython:${LARADOCK_IPYTHON_CONTROLLER_IP}"
### Docker-in-Docker ################################################
docker-in-docker:
image: docker:dind
privileged: true
volumes:
- ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER}
expose:
- 2375
networks:
- backend
### NetData ################################################
netdata:
image: titpetric/netdata:latest
cap_add:
- SYS_PTRACE
volumes:
- /:/host:ro
ports:
- "${NETDATA_PORT}:19999"
networks:
- backend
### REDISWEBUI ################################################
redis-webui:
build:
context: ./redis-webui
environment:
- ADMIN_USER=${REDIS_WEBUI_USERNAME}
- ADMIN_PASS=${REDIS_WEBUI_PASSWORD}
- REDIS_1_HOST=${REDIS_WEBUI_CONNECT_HOST}
- REDIS_1_PORT=${REDIS_WEBUI_CONNECT_PORT}
networks:
- backend
ports:
- "${REDIS_WEBUI_PORT}:80"
depends_on:
- redis
### MongoWebUI ################################################
mongo-webui:
build:
context: ./mongo-webui
environment:
- ROOT_URL=${MONGO_WEBUI_ROOT_URL}
- MONGO_URL=${MONGO_WEBUI_MONGO_URL}
- INSTALL_MONGO=${MONGO_WEBUI_INSTALL_MONGO}
volumes:
- ${DATA_PATH_HOST}/mongo-webui:/data/db
ports:
- "${MONGO_WEBUI_PORT}:3000"
networks:
- backend
depends_on:
- mongo
### Metabase #################################################
metabase:
image: metabase/metabase:latest
environment:
- MB_DB_FILE=/metabase-data/${METABASE_DB_FILE}
ports:
- ${METABASE_PORT}:3000
volumes:
- ${DATA_PATH_HOST}/metabase-data:/metabase-data
networks:
- backend
### IDE-THEIA ################################################
ide-theia:
build:
context: ./ide-theia
volumes:
- ${APP_CODE_PATH_HOST}:/home/project
ports:
- "${IDE_THEIA_PORT}:3000"
networks:
- backend
### IDE-WEBIDE ################################################
ide-webide:
build:
context: ./ide-webide
volumes:
- ${DATA_PATH_HOST}/ide/webide/ide.db:/root/.coding-ide/ide.db
ports:
- "${IDE_WEBIDE_PORT}:8080"
networks:
- backend
### IDE-CODIAD ################################################
ide-codiad:
build:
context: ./ide-codiad
environment:
- APP_CODE_PATH_CONTAINER=${APP_CODE_PATH_CONTAINER}
- TZ=${WORKSPACE_TIMEZONE}
- PGID=1000
- PUID=1000
volumes:
- /etc/localtime:/etc/localtime:ro
- ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER}
- ${DATA_PATH_HOST}/ide/codiad:/config
ports:
- "${IDE_CODIAD_PORT}:80"
networks:
- backend
### IDE-ICECODER ################################################
ide-icecoder:
build:
context: ./ide-icecoder
environment:
- DOCUMENT_ROOT=${APP_CODE_PATH_CONTAINER}
- TZ=${WORKSPACE_TIMEZONE}
- PGID=1000
- PUID=1000
volumes:
- /etc/localtime:/etc/localtime:ro
- ${APP_CODE_PATH_HOST}:/home/laradock/ICEcoder/dev
ports:
- "${IDE_ICECODER_PORT}:8080"
networks:
- backend
### DOCKER-REGISTRY ################################################
docker-registry:
build:
context: ./docker-registry
volumes:
- /etc/localtime:/etc/localtime:ro
- ${DATA_PATH_HOST}/docker-registry:/var/lib/registry
ports:
- "${DOCKER_REGISTRY_PORT}:5000"
networks:
- backend
### DOCKER-WEB-UI ################################################
docker-web-ui:
build:
context: ./docker-web-ui
environment:
- TZ=${WORKSPACE_TIMEZONE}
- ENV_DOCKER_REGISTRY_HOST=${DOCKER_WEBUI_REGISTRY_HOST}
- ENV_DOCKER_REGISTRY_PORT=${DOCKER_WEBUI_REGISTRY_PORT}
- ENV_DOCKER_REGISTRY_USE_SSL=${DOCKER_REGISTRY_USE_SSL}
- ENV_MODE_BROWSE_ONLY=${DOCKER_REGISTRY_BROWSE_ONLY}
volumes:
- /etc/localtime:/etc/localtime:ro
ports:
- "${DOCKER_WEBUI_PORT}:80"
networks:
- frontend
- backend
### MAILU ################################################
mailu:
image: mailu/admin:${MAILU_VERSION}
volumes:
- "${DATA_PATH_HOST}/mailu/data:/data"
- "${DATA_PATH_HOST}/mailu/dkim:/dkim"
- "${DATA_PATH_HOST}/mailu/webmail:/webmail"
- /var/run/docker.sock:/var/run/docker.sock:ro
depends_on:
- mailu-front
- mailu-imap
- mailu-smtp
- mailu-antispam
- mailu-antivirus
- mailu-webdav
- mailu-admin
- mailu-webmail
- mailu-fetchmail
command: ["sh", "-c", "echo ${MAILU_INIT_ADMIN_USERNAME}@${MAILU_DOMAIN} ${MAILU_INIT_ADMIN_PASSWORD} ;python manage.py advertise ; python manage.py db upgrade ; python manage.py admin ${MAILU_INIT_ADMIN_USERNAME} ${MAILU_DOMAIN} ${MAILU_INIT_ADMIN_PASSWORD} || true;sed -i -- \"s/= Off/= On/g\" /webmail/_data_/_default_/configs/config.ini || true;if grep -Fq \"registration_link_url\" /webmail/_data_/_default_/configs/config.ini;then echo Already set!;else echo \"\" >> /webmail/_data_/_default_/configs/config.ini; echo \"[login]\" >> /webmail/_data_/_default_/configs/config.ini;echo \"registration_link_url = '${MAILU_WEBSITE}${MAILU_WEB_ADMIN}/ui/user/signup'\" >> /webmail/_data_/_default_/configs/config.ini;fi"]
networks:
- backend
mailu-front:
image: mailu/nginx:${MAILU_VERSION}
environment:
- ADMIN=${MAILU_ADMIN}
- WEB_ADMIN=${MAILU_WEB_ADMIN}
- WEB_WEBMAIL=${MAILU_WEB_WEBMAIL}
- WEBDAV=${MAILU_WEBDAV}
- HOSTNAMES=${MAILU_HOSTNAMES}
- TLS_FLAVOR=${MAILU_TLS_FLAVOR}
- MESSAGE_SIZE_LIMIT=${MAILU_MESSAGE_SIZE_LIMIT}
ports:
- "${MAILU_HTTP_PORT}:80"
- "${MAILU_HTTPS_PORT}:443"
- "110:110"
- "143:143"
- "993:993"
- "995:995"
- "25:25"
- "465:465"
- "587:587"
volumes:
- "${DATA_PATH_HOST}/mailu/certs:/certs"
networks:
backend:
aliases:
- front
mailu-imap:
image: mailu/dovecot:${MAILU_VERSION}
environment:
- DOMAIN=${MAILU_DOMAIN}
- HOSTNAMES=${MAILU_HOSTNAMES}
- POSTMASTER=${MAILU_POSTMASTER}
- WEBMAIL=${MAILU_WEBMAIL}
- RECIPIENT_DELIMITER=${MAILU_RECIPIENT_DELIMITER}
volumes:
- "${DATA_PATH_HOST}/mailu/data:/data"
- "${DATA_PATH_HOST}/mailu/mail:/mail"
- "${DATA_PATH_HOST}/mailu/overrides:/overrides"
depends_on:
- mailu-front
networks:
backend:
aliases:
- imap
mailu-smtp:
image: mailu/postfix:${MAILU_VERSION}
environment:
- DOMAIN=${MAILU_DOMAIN}
- HOSTNAMES=${MAILU_HOSTNAMES}
- RELAYHOST=${MAILU_RELAYHOST}
- RELAYNETS=${MAILU_RELAYNETS}
- RECIPIENT_DELIMITER=${MAILU_RECIPIENT_DELIMITER}
- MESSAGE_SIZE_LIMIT=${MAILU_MESSAGE_SIZE_LIMIT}
volumes:
- "${DATA_PATH_HOST}/mailu/data:/data"
- "${DATA_PATH_HOST}/mailu/overrides:/overrides"
depends_on:
- mailu-front
networks:
backend:
aliases:
- smtp
mailu-antispam:
image: mailu/rspamd:${MAILU_VERSION}
volumes:
- "${DATA_PATH_HOST}/mailu/filter:/var/lib/rspamd"
- "${DATA_PATH_HOST}/mailu/dkim:/dkim"
- "${DATA_PATH_HOST}/mailu/overrides/rspamd:/etc/rspamd/override.d"
depends_on:
- mailu-front
networks:
backend:
aliases:
- antispam
mailu-antivirus:
image: mailu/clamav:${MAILU_VERSION}
volumes:
- "${DATA_PATH_HOST}/mailu/filter:/data"
networks:
backend:
aliases:
- antivirus
mailu-webdav:
image: mailu/${MAILU_WEBDAV}:${MAILU_VERSION}
volumes:
- "${DATA_PATH_HOST}/mailu/dav:/data"
networks:
backend:
aliases:
- webdav
mailu-admin:
image: mailu/admin:${MAILU_VERSION}
environment:
- DOMAIN=${MAILU_DOMAIN}
- HOSTNAMES=${MAILU_HOSTNAMES}
- POSTMASTER=${MAILU_POSTMASTER}
- SECRET_KEY=${MAILU_SECRET_KEY}
- AUTH_RATELIMIT=${MAILU_AUTH_RATELIMIT}
- TLS_FLAVOR=${MAILU_TLS_FLAVOR}
- DISABLE_STATISTICS=${MAILU_DISABLE_STATISTICS}
- DMARC_RUA=${MAILU_DMARC_RUA}
- DMARC_RUF=${MAILU_DMARC_RUF}
- WELCOME=${MAILU_WELCOME}
- WELCOME_SUBJECT=${MAILU_WELCOME_SUBJECT}
- WELCOME_BODY=${MAILU_WELCOME_BODY}
- WEB_ADMIN=${MAILU_WEB_ADMIN}
- WEB_WEBMAIL=${MAILU_WEB_WEBMAIL}
- WEBSITE=${MAILU_WEBSITE}
- WEBMAIL=${MAILU_WEBMAIL}
- SITENAME=${MAILU_SITENAME}
- PASSWORD_SCHEME=${MAILU_PASSWORD_SCHEME}
- RECAPTCHA_PUBLIC_KEY=${MAILU_RECAPTCHA_PUBLIC_KEY}
- RECAPTCHA_PRIVATE_KEY=${MAILU_RECAPTCHA_PRIVATE_KEY}
volumes:
- "${DATA_PATH_HOST}/mailu/data:/data"
- "${DATA_PATH_HOST}/mailu/dkim:/dkim"
- /var/run/docker.sock:/var/run/docker.sock:ro
depends_on:
- redis
networks:
backend:
aliases:
- admin
mailu-webmail:
image: "mailu/${MAILU_WEBMAIL}:${MAILU_VERSION}"
volumes:
- "${DATA_PATH_HOST}/mailu/webmail:/data"
networks:
backend:
aliases:
- webmail
mailu-fetchmail:
image: mailu/fetchmail:${MAILU_VERSION}
environment:
- FETCHMAIL_DELAY=${MAILU_FETCHMAIL_DELAY}
volumes:
- "${DATA_PATH_HOST}/mailu/data:/data"
networks:
backend:
aliases:
- fetchmail
### TRAEFIK #########################################
traefik:
build:
context: ./traefik
command: --docker
volumes:
- /var/run/docker.sock:/var/run/docker.sock
ports:
- "${TRAEFIK_HOST_HTTP_PORT}:80"
- "${TRAEFIK_HOST_HTTPS_PORT}:443"
networks:
- frontend
- backend
labels:
- traefik.backend=traefik
- traefik.frontend.rule=Host:monitor.localhost
- traefik.port=8080
### MOSQUITTO Broker #########################################
mosquitto:
build:
context: ./mosquitto
volumes:
- ${DATA_PATH_HOST}/mosquitto/data:/mosquitto/data
ports:
- "${MOSQUITTO_PORT}:9001"
networks:
- frontend
- backend
2019-02-09 20:07:37 +08:00
### COUCHDB ###################################################
couchdb:
build:
context: ./couchdb
volumes:
- ${DATA_PATH_HOST}/couchdb/data:/opt/couchdb/data
ports:
- "${COUCHDB_PORT}:5984"
networks:
- backend
### Manticore Search ###########################################
manticore:
build:
context: ./manticore
volumes:
- ${MANTICORE_CONFIG_PATH}:/etc/sphinxsearch
- ${DATA_PATH_HOST}/manticore/data:/var/lib/manticore/data
- ${DATA_PATH_HOST}/manticore/log:/var/lib/manticore/log
ports:
- "${MANTICORE_API_PORT}:9312"
- "${MANTICORE_SPHINXQL_PORT}:9306"
- "${MANTICORE_HTTP_PORT}:9308"
networks:
- backend
### SONARQUBE ################################################
sonarqube:
build:
context: ./sonarqube
hostname: "${SONARQUBE_HOSTNAME}"
volumes:
- ${DATA_PATH_HOST}/sonarqube/conf:/opt/sonarqube/conf
- ${DATA_PATH_HOST}/sonarqube/data:/opt/sonarqube/data
- ${DATA_PATH_HOST}/sonarqube/logs:/opt/sonarqube/logs
- ${DATA_PATH_HOST}/sonarqube/extensions:/opt/sonarqube/extensions
- ${DATA_PATH_HOST}/sonarqube/plugins:/opt/sonarqube/lib/bundled-plugins
ports:
- ${SONARQUBE_PORT}:9000
depends_on:
- postgres
environment:
- sonar.jdbc.username=${SONARQUBE_POSTGRES_USER}
- sonar.jdbc.password=${SONARQUBE_POSTGRES_PASSWORD}
- sonar.jdbc.url=jdbc:postgresql://${SONARQUBE_POSTGRES_HOST}:5432/${SONARQUBE_POSTGRES_DB}
networks:
- backend
- frontend
### CONFLUENCE ################################################
confluence:
container_name: Confluence
image: atlassian/confluence-server:${CONFLUENCE_VERSION}
restart: always
ports:
- "${CONFLUENCE_HOST_HTTP_PORT}:8090"
networks:
- frontend
- backend
depends_on:
- postgres
volumes:
- ${DATA_PATH_HOST}/Confluence:/var/atlassian/application-data