version: '3' networks: frontend: driver: ${NETWORKS_DRIVER} backend: driver: ${NETWORKS_DRIVER} 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} services: ### Workspace Utilities ################################## workspace: build: context: ./workspace args: - LARADOCK_PHP_VERSION=${PHP_VERSION} - INSTALL_SUBVERSION=${WORKSPACE_INSTALL_SUBVERSION} - INSTALL_XDEBUG=${WORKSPACE_INSTALL_XDEBUG} - INSTALL_PHPDBG=${WORKSPACE_INSTALL_PHPDBG} - INSTALL_BLACKFIRE=${INSTALL_BLACKFIRE} - INSTALL_SSH2=${WORKSPACE_INSTALL_SSH2} - INSTALL_GMP=${WORKSPACE_INSTALL_GMP} - INSTALL_SOAP=${WORKSPACE_INSTALL_SOAP} - INSTALL_LDAP=${WORKSPACE_INSTALL_LDAP} - INSTALL_IMAP=${WORKSPACE_INSTALL_IMAP} - INSTALL_MONGO=${WORKSPACE_INSTALL_MONGO} - INSTALL_AMQP=${WORKSPACE_INSTALL_AMQP} - INSTALL_PHPREDIS=${WORKSPACE_INSTALL_PHPREDIS} - INSTALL_MSSQL=${WORKSPACE_INSTALL_MSSQL} - INSTALL_NODE=${WORKSPACE_INSTALL_NODE} - NPM_REGISTRY=${WORKSPACE_NPM_REGISTRY} - 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_DRUSH=${WORKSPACE_INSTALL_DRUSH} - INSTALL_DRUPAL_CONSOLE=${WORKSPACE_INSTALL_DRUPAL_CONSOLE} - INSTALL_AEROSPIKE=${WORKSPACE_INSTALL_AEROSPIKE} - AEROSPIKE_PHP_REPOSITORY=${AEROSPIKE_PHP_REPOSITORY} - INSTALL_V8JS=${WORKSPACE_INSTALL_V8JS} - COMPOSER_GLOBAL_INSTALL=${WORKSPACE_COMPOSER_GLOBAL_INSTALL} - COMPOSER_REPO_PACKAGIST=${WORKSPACE_COMPOSER_REPO_PACKAGIST} - 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} - INSTALL_MC=${WORKSPACE_INSTALL_MC} - INSTALL_SYMFONY=${WORKSPACE_INSTALL_SYMFONY} - INSTALL_PYTHON=${WORKSPACE_INSTALL_PYTHON} - INSTALL_IMAGE_OPTIMIZERS=${WORKSPACE_INSTALL_IMAGE_OPTIMIZERS} - INSTALL_IMAGEMAGICK=${WORKSPACE_INSTALL_IMAGEMAGICK} - INSTALL_TERRAFORM=${WORKSPACE_INSTALL_TERRAFORM} - INSTALL_DUSK_DEPS=${WORKSPACE_INSTALL_DUSK_DEPS} - INSTALL_PG_CLIENT=${WORKSPACE_INSTALL_PG_CLIENT} - INSTALL_SWOOLE=${WORKSPACE_INSTALL_SWOOLE} - INSTALL_LIBPNG=${WORKSPACE_INSTALL_LIBPNG} - INSTALL_IONCUBE=${WORKSPACE_INSTALL_IONCUBE} - PUID=${WORKSPACE_PUID} - PGID=${WORKSPACE_PGID} - CHROME_DRIVER_VERSION=${WORKSPACE_CHROME_DRIVER_VERSION} - NODE_VERSION=${WORKSPACE_NODE_VERSION} - YARN_VERSION=${WORKSPACE_YARN_VERSION} - DRUSH_VERSION=${WORKSPACE_DRUSH_VERSION} - TZ=${WORKSPACE_TIMEZONE} - BLACKFIRE_CLIENT_ID=${BLACKFIRE_CLIENT_ID} - BLACKFIRE_CLIENT_TOKEN=${BLACKFIRE_CLIENT_TOKEN} volumes: - ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER} extra_hosts: - "dockerhost:${DOCKER_HOST_IP}" ports: - "${WORKSPACE_SSH_PORT}:22" tty: true environment: - PHP_IDE_CONFIG=${PHP_IDE_CONFIG} networks: - frontend - backend ### PHP-FPM ############################################## php-fpm: build: context: ./php-fpm args: - LARADOCK_PHP_VERSION=${PHP_VERSION} - INSTALL_XDEBUG=${PHP_FPM_INSTALL_XDEBUG} - INSTALL_PHPDBG=${PHP_FPM_INSTALL_PHPDBG} - INSTALL_BLACKFIRE=${INSTALL_BLACKFIRE} - INSTALL_SSH2=${PHP_FPM_INSTALL_SSH2} - INSTALL_SOAP=${PHP_FPM_INSTALL_SOAP} - INSTALL_IMAP=${PHP_FPM_INSTALL_IMAP} - INSTALL_MONGO=${PHP_FPM_INSTALL_MONGO} - INSTALL_AMQP=${PHP_FPM_INSTALL_AMQP} - INSTALL_MSSQL=${PHP_FPM_INSTALL_MSSQL} - INSTALL_ZIP_ARCHIVE=${PHP_FPM_INSTALL_ZIP_ARCHIVE} - INSTALL_BCMATH=${PHP_FPM_INSTALL_BCMATH} - INSTALL_GMP=${PHP_FPM_INSTALL_GMP} - INSTALL_PHPREDIS=${PHP_FPM_INSTALL_PHPREDIS} - INSTALL_MEMCACHED=${PHP_FPM_INSTALL_MEMCACHED} - INSTALL_OPCACHE=${PHP_FPM_INSTALL_OPCACHE} - INSTALL_EXIF=${PHP_FPM_INSTALL_EXIF} - INSTALL_AEROSPIKE=${PHP_FPM_INSTALL_AEROSPIKE} - AEROSPIKE_PHP_REPOSITORY=${AEROSPIKE_PHP_REPOSITORY} - INSTALL_MYSQLI=${PHP_FPM_INSTALL_MYSQLI} - INSTALL_PGSQL=${PHP_FPM_INSTALL_PGSQL} - INSTALL_PG_CLIENT=${PHP_FPM_INSTALL_PG_CLIENT} - INSTALL_TOKENIZER=${PHP_FPM_INSTALL_TOKENIZER} - INSTALL_INTL=${PHP_FPM_INSTALL_INTL} - INSTALL_GHOSTSCRIPT=${PHP_FPM_INSTALL_GHOSTSCRIPT} - INSTALL_LDAP=${PHP_FPM_INSTALL_LDAP} - INSTALL_SWOOLE=${PHP_FPM_INSTALL_SWOOLE} - INSTALL_IMAGE_OPTIMIZERS=${PHP_FPM_INSTALL_IMAGE_OPTIMIZERS} - INSTALL_IMAGEMAGICK=${PHP_FPM_INSTALL_IMAGEMAGICK} - INSTALL_CALENDAR=${PHP_FPM_INSTALL_CALENDAR} - INSTALL_FAKETIME=${PHP_FPM_INSTALL_FAKETIME} - INSTALL_IONCUBE=${PHP_FPM_INSTALL_IONCUBE} volumes: - ./php-fpm/php${PHP_VERSION}.ini:/usr/local/etc/php/php.ini - ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER} 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 ### PHP Worker ############################################ php-worker: build: context: ./php-worker args: - PHP_VERSION=${PHP_VERSION} - INSTALL_PGSQL=${PHP_WORKER_INSTALL_PGSQL} - INSTALL_BCMATH=${PHP_WORKER_INSTALL_BCMATH} volumes: - ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER} - ./php-worker/supervisord.d:/etc/supervisord.d depends_on: - workspace extra_hosts: - "dockerhost:${DOCKER_HOST_IP}" networks: - backend ### NGINX Server ######################################### nginx: build: context: ./nginx args: - PHP_UPSTREAM_CONTAINER=${NGINX_PHP_UPSTREAM_CONTAINER} - PHP_UPSTREAM_PORT=${NGINX_PHP_UPSTREAM_PORT} volumes: - ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER} - ${NGINX_HOST_LOG_PATH}:/var/log/nginx - ${NGINX_SITES_PATH}:/etc/nginx/sites-available ports: - "${NGINX_HOST_HTTP_PORT}:80" - "${NGINX_HOST_HTTPS_PORT}:443" depends_on: - php-fpm networks: - frontend - backend ### Blackfire ######################################## blackfire: image: blackfire/blackfire environment: - BLACKFIRE_SERVER_ID=${BLACKFIRE_SERVER_ID} - BLACKFIRE_SERVER_TOKEN=${BLACKFIRE_SERVER_TOKEN} depends_on: - php-fpm networks: - backend ### Apache Server ######################################## apache2: build: context: ./apache2 args: - PHP_UPSTREAM_CONTAINER=${APACHE_PHP_UPSTREAM_CONTAINER} - PHP_UPSTREAM_PORT=${APACHE_PHP_UPSTREAM_PORT} - PHP_UPSTREAM_TIMEOUT=${APACHE_PHP_UPSTREAM_TIMEOUT} - DOCUMENT_ROOT=${APACHE_DOCUMENT_ROOT} volumes: - ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER} - ${APACHE_HOST_LOG_PATH}:/var/log/apache2 - ${APACHE_SITES_PATH}:/etc/apache2/sites-available ports: - "${APACHE_HOST_HTTP_PORT}:80" - "${APACHE_HOST_HTTPS_PORT}:443" depends_on: - php-fpm networks: - frontend - backend ### HHVM ################################################# hhvm: build: ./hhvm volumes: - ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER} expose: - "9000" depends_on: - workspace networks: - frontend - backend ### Minio ################################################ minio: build: ./minio volumes: - ${DATA_PATH_HOST}/minio/data:/export - ${DATA_PATH_HOST}/minio/config:/root/.minio ports: - "${MINIO_PORT}:9000" environment: - MINIO_ACCESS_KEY=access - MINIO_SECRET_KEY=secretkey networks: - frontend - backend ### MySQL ################################################ mysql: build: context: ./mysql args: - MYSQL_VERSION=${MYSQL_VERSION} environment: - MYSQL_DATABASE=${MYSQL_DATABASE} - MYSQL_USER=${MYSQL_USER} - MYSQL_PASSWORD=${MYSQL_PASSWORD} - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD} - TZ=${WORKSPACE_TIMEZONE} volumes: - ${DATA_PATH_HOST}/mysql:/var/lib/mysql - ${MYSQL_ENTRYPOINT_INITDB}:/docker-entrypoint-initdb.d ports: - "${MYSQL_PORT}:3306" networks: - backend ### 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: - ${DATA_PATH_HOST}/percona:/var/lib/mysql - ${PERCONA_ENTRYPOINT_INITDB}:/docker-entrypoint-initdb.d ports: - "${PERCONA_PORT}:3306" networks: - backend ### MSSQL ################################################ mssql: build: context: ./mssql environment: - MSSQL_DATABASE=${MSSQL_DATABASE} - SA_PASSWORD=${MSSQL_PASSWORD} - ACCEPT_EULA=Y volumes: - ${DATA_PATH_HOST}/mssql:/var/opt/mssql ports: - "${MSSQL_PORT}:1433" networks: - backend ### MariaDB ############################################## mariadb: build: ./mariadb volumes: - ${DATA_PATH_HOST}/mariadb:/var/lib/mysql - ${MARIADB_ENTRYPOINT_INITDB}:/docker-entrypoint-initdb.d 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 ### PostgreSQL ########################################### postgres: build: ./postgres volumes: - ${DATA_PATH_HOST}/postgres:/var/lib/postgresql/data - ${POSTGRES_ENTRYPOINT_INITDB}:/docker-entrypoint-initdb.d ports: - "${POSTGRES_PORT}:5432" environment: - POSTGRES_DB=${POSTGRES_DB} - POSTGRES_USER=${POSTGRES_USER} - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} networks: - backend ### PostgreSQL PostGis ################################### postgres-postgis: build: ./postgres-postgis volumes: - ${DATA_PATH_HOST}/postgres:/var/lib/postgresql/data ports: - "${POSTGRES_PORT}:5432" environment: - POSTGRES_DB=${POSTGRES_DB} - POSTGRES_USER=${POSTGRES_USER} - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} networks: - backend ### Neo4j ################################################ neo4j: build: ./neo4j ports: - "7474:7474" - "1337:1337" environment: - NEO4J_AUTH=default:secret volumes: - ${DATA_PATH_HOST}/neo4j:/var/lib/neo4j/data networks: - backend ### MongoDB ############################################## mongo: build: ./mongo ports: - "${MONGODB_PORT}:27017" volumes: - ${DATA_PATH_HOST}/mongo:/data/db networks: - backend ### RethinkDB ############################################## rethinkdb: build: ./rethinkdb ports: - "${RETHINKDB_PORT}:8080" volumes: - ${DATA_PATH_HOST}/rethinkdb:/data/rethinkdb_data networks: - backend ### Redis ################################################ redis: build: ./redis volumes: - ${DATA_PATH_HOST}/redis:/data ports: - "${REDIS_PORT}:6379" networks: - backend ### Aerospike ########################################## aerospike: build: ./aerospike volumes: - workspace - ${DATA_PATH_HOST}/aerospike:/opt/aerospike/data ports: - "${AEROSPIKE_SERVICE_PORT}:3000" - "${AEROSPIKE_FABRIC_PORT}:3001" - "${AEROSPIKE_HEARTBEAT_PORT}:3002" - "${AEROSPIKE_INFO_PORT}:3003" networks: - backend ### Memcached ############################################ memcached: build: ./memcached volumes: - ${DATA_PATH_HOST}/memcached:/var/lib/memcached ports: - "${MEMCACHED_HOST_PORT}:11211" depends_on: - php-fpm networks: - backend ### Beanstalkd ########################################### beanstalkd: build: ./beanstalkd ports: - "${BEANSTALKD_HOST_PORT}:11300" privileged: true depends_on: - php-fpm networks: - backend ### RabbitMQ ############################################# rabbitmq: 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 ### Beanstalkd Console ################################### beanstalkd-console: build: ./beanstalkd-console ports: - "${BEANSTALKD_CONSOLE_HOST_PORT}:2080" depends_on: - beanstalkd networks: - backend ### Caddy Server ######################################### caddy: build: ./caddy volumes: - ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER} - ${CADDY_CONFIG_PATH}:/etc/caddy - ${CADDY_HOST_LOG_PATH}:/var/log/caddy - ${DATA_PATH_HOST}:/root/.caddy ports: - "${CADDY_HOST_HTTP_PORT}:80" - "${CADDY_HOST_HTTPS_PORT}:443" depends_on: - php-fpm networks: - frontend - backend ### phpMyAdmin ########################################### phpmyadmin: 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 ### Adminer ########################################### adminer: build: context: ./adminer args: - INSTALL_MSSQL=${ADM_INSTALL_MSSQL} ports: - "${ADM_PORT}:8080" depends_on: - php-fpm networks: - frontend - backend ### pgAdmin ############################################## pgadmin: build: ./pgadmin ports: - "5050:5050" volumes: - ${DATA_PATH_HOST}/pgadmin-backup:/var/lib/pgadmin/storage/pgadmin4 depends_on: - postgres networks: - frontend - backend ### ElasticSearch ######################################## elasticsearch: build: ./elasticsearch volumes: - elasticsearch:/usr/share/elasticsearch/data environment: - cluster.name=laradock-cluster - bootstrap.memory_lock=true - "ES_JAVA_OPTS=-Xms512m -Xmx512m" ulimits: memlock: soft: -1 hard: -1 ports: - "${ELASTICSEARCH_HOST_HTTP_PORT}:9200" - "${ELASTICSEARCH_HOST_TRANSPORT_PORT}:9300" depends_on: - php-fpm networks: - frontend - backend ### Kibana ############################################## kibana: build: ./kibana ports: - "${KIBANA_HTTP_PORT}:5601" depends_on: - elasticsearch networks: - frontend - backend ### Certbot ######################################### certbot: build: context: ./certbot volumes: - ./data/certbot/certs/:/var/certs - ./certbot/letsencrypt/:${APP_CODE_PATH_CONTAINER}/letsencrypt environment: - CN="fake.domain.com" - EMAIL="fake.email@gmail.com" networks: - frontend ### Mailhog ################################################ mailhog: build: ./mailhog ports: - "1025:1025" - "8025:8025" networks: - frontend - backend ### MailDev ############################################## maildev: build: ./maildev ports: - "${MAILDEV_HTTP_PORT}:80" - "${MAILDEV_SMTP_PORT}:25" networks: - frontend - backend ### Selenium ############################################### selenium: build: ./selenium ports: - "${SELENIUM_PORT}:4444" volumes: - /dev/shm:/dev/shm networks: - frontend ### 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 ### HAProxy #################################### haproxy: build: ./haproxy ports: - "${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 networks: - frontend - backend ### Grafana ################################################ grafana: build: context: ./grafana volumes: - ${DATA_PATH_HOST}/grafana:/var/lib/grafana ports: - "${GRAFANA_PORT}:3000" networks: - backend ### 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 ### Solr ################################################ solr: build: context: ./solr args: - SOLR_VERSION=${SOLR_VERSION} - SOLR_DATAIMPORTHANDLER_MYSQL=${SOLR_DATAIMPORTHANDLER_MYSQL} volumes: - ${DATA_PATH_HOST}/solr:/opt/solr/server/solr/mycores ports: - "${SOLR_PORT}:8983" networks: - backend ### AWS EB-CLI ################################################ aws: build: context: ./aws volumes: - ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER} depends_on: - workspace tty: true ### Portainer ################################################ portainer: build: context: ./portainer volumes: - ${DATA_PATH_HOST}/portainer_data:/data - /var/run/docker.sock:/var/run/docker.sock extra_hosts: - "dockerhost:${DOCKER_HOST_IP}" ports: - 9010:9000 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 ### 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\""] ### 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 ### 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