laradock/docker-compose.yml

1269 lines
41 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}
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}
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}
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}
2017-03-17 14:57:54 +08:00
- INSTALL_DRUSH=${WORKSPACE_INSTALL_DRUSH}
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}
- AEROSPIKE_PHP_REPOSITORY=${AEROSPIKE_PHP_REPOSITORY}
2017-05-07 22:54:55 +08:00
- INSTALL_V8JS=${WORKSPACE_INSTALL_V8JS}
2017-03-17 14:57:54 +08:00
- COMPOSER_GLOBAL_INSTALL=${WORKSPACE_COMPOSER_GLOBAL_INSTALL}
- 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_LIBPNG=${WORKSPACE_INSTALL_LIBPNG}
- INSTALL_IONCUBE=${WORKSPACE_INSTALL_IONCUBE}
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}
2018-04-05 21:43:22 +08:00
volumes:
- ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER}
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}
networks:
- frontend
- backend
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:
- 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}
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_MSSQL=${PHP_FPM_INSTALL_MSSQL}
2017-03-17 14:57:54 +08:00
- INSTALL_ZIP_ARCHIVE=${PHP_FPM_INSTALL_ZIP_ARCHIVE}
- 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}
- AEROSPIKE_PHP_REPOSITORY=${AEROSPIKE_PHP_REPOSITORY}
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}
2017-03-17 14:57:54 +08:00
- INSTALL_TOKENIZER=${PHP_FPM_INSTALL_TOKENIZER}
- 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}
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}
2017-04-16 19:33:27 +08:00
volumes:
- ./php-fpm/php${PHP_VERSION}.ini:/usr/local/etc/php/php.ini
2018-04-05 21:43:22 +08:00
- ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER}
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}
- INSTALL_PGSQL=${PHP_WORKER_INSTALL_PGSQL}
- INSTALL_BCMATH=${PHP_WORKER_INSTALL_BCMATH}
volumes:
2018-04-05 21:43:22 +08:00
- ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER}
- ./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-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}
2017-03-17 14:57:54 +08:00
volumes:
2018-04-05 21:43:22 +08:00
- ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER}
- ${NGINX_HOST_LOG_PATH}:/var/log/nginx
- ${NGINX_SITES_PATH}:/etc/nginx/sites-available
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:
2018-04-05 21:43:22 +08:00
- ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER}
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}
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:
2017-03-17 14:57:54 +08:00
build: ./mariadb
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:
- 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}
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
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"
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}
depends_on:
- php-fpm
networks:
- backend
2016-08-28 16:12:55 +08:00
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:
2018-04-05 21:43:22 +08:00
- ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER}
- ${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:
2017-03-17 14:57:54 +08:00
build: ./pgadmin
ports:
- "5050:5050"
volumes:
2018-04-05 21:43:22 +08:00
- ${DATA_PATH_HOST}/pgadmin-backup:/var/lib/pgadmin/storage/pgadmin4
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
- bootstrap.memory_lock=true
2017-12-29 00:54:45 +08:00
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
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
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-04-05 21:43:22 +08:00
- ./certbot/letsencrypt/:${APP_CODE_PATH_CONTAINER}/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
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-02-11 18:36:57 +08:00
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}
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:
context: ./aws
2018-04-05 21:43:22 +08:00
volumes:
- ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER}
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: |
external_url '${GITLAB_DOMAIN_NAME}'
redis['enable'] = false
nginx['listen_https'] = false
nginx['listen_port'] = 80
postgresql['enable'] = false
gitlab_rails['trusted_proxies'] = ['caddy','nginx','apache2']
gitlab_rails['redis_host'] = 'redis'
gitlab_rails['redis_database'] = 8
gitlab_rails['db_host'] = 'postgres'
gitlab_rails['db_username'] = 'laradock_gitlab'
gitlab_rails['db_password'] = 'laradock_gitlab'
gitlab_rails['db_database'] = 'laradock_gitlab'
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_DOMAIN_NAME}
volumes:
- ${DATA_PATH_HOST}/gitlab/runner:/etc/gitlab-runner
- /var/run/docker.sock:/var/run/docker.sock:rw
restart: always
2018-05-27 17:39:41 +08:00
2018-07-13 11:35:46 +08:00
### JupyterHub #########################################
jupyterhub:
build:
context: ./jupyterhub
depends_on:
- postgres
- jupyterhub-user
restart: always
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=${JUPYTERHUB_LOCAL_NOTEBOOK_IMAGE}
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
### PHPRedisAdmin ################################################
phpredisadmin:
image: erikdubbelboer/phpredisadmin:latest
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
restart: always
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