version: '3' # IPTABLES RULES IF NECESSARY #-A INPUT -i br+ -j ACCEPT #-A INPUT -i docker0 -j ACCEPT #-A OUTPUT -o br+ -j ACCEPT #-A OUTPUT -o docker0 -j ACCEPT # The .env file is for production use with server-specific configurations services: # Frontend web proxy for accessing services and providing TLS encryption nginx: build: ./nginx container_name: md2k-nginx restart: always volumes: - ./nginx/site:/var/www - ./nginx/nginx-selfsigned.crt:/etc/ssh/certs/ssl-cert.crt - ./nginx/nginx-selfsigned.key:/etc/ssh/certs/ssl-cert.key ports: - "443:443" - "80:80" links: - apiserver - grafana - jupyter apiserver: build: "../CerebralCortex-APIServer" container_name: md2k-api-server restart: always expose: - 80 links: - mysql - kafka - minio depends_on: - mysql environment: - MINIO_HOST=${MINIO_HOST:-minio} - MINIO_ACCESS_KEY=${MINIO_ACCESS_KEY:-ZngmrLWgbSfZUvgocyeH} - MINIO_SECRET_KEY=${MINIO_SECRET_KEY:-IwUnI5w0f5Hf1v2qVwcr} - MYSQL_HOST=${MYSQL:-mysql} - MYSQL_DB_USER=${MYSQL_ROOT_USER:-root} - MYSQL_DB_PASS=${MYSQL_ROOT_PASSWORD:-pass} - KAFKA_HOST=${KAFKA_HOST:-kafka} - JWT_SECRET_KEY=${MINIO_SECRET_KEY:-IwUnI5w0f5Hf1v2qVwcr} - FLASK_HOST=${FLASK_HOST:-0.0.0.0} - FLASK_PORT=${FLASK_PORT:-80} - FLASK_DEBUG=${FLASK_DEBUG:-False} volumes: - ./data:/data - ./cc_config_file:/cc_config_file - ./merebrum_config:/merebrum_config # Data vizualizations grafana: image: "grafana/grafana" container_name: md2k-grafana restart: always ports: - "3000:3000" links: - influxdb environment: - GF_SERVER_ROOT_URL=%(protocol)s://%(domain)s:%(http_port)s/grafana/ # - GF_INSTALL_PLUGINS=raintank-worldping-app,grafana-clock-panel,grafana-simple-json-datasource volumes: - timeseries-storage:/var/lib/grafana # - timeseries-storage:/etc/grafana influxdb: image: "influxdb:alpine" container_name: md2k-influxdb restart: always ports: - "8086:8086" volumes: - timeseries-storage:/var/lib/influxdb entrypoint: - INFLUXDB_DB="cerebralcortex_raw" # Data Science Dashboard Interface jupyter: build: "./jupyterhub" container_name: md2k-jupyterhub ports: - 8000 restart: always environment: TINI_SUBREAPER: 'true' volumes: - ./jupyterhub/conf:/srv/jupyterhub/conf - ./cc_config_file:/home/md2k/cc_config_file - ./cc_demo:/home/md2k/cc_demo - /home/vagrant/processed_data:/home/vagrant/processed_data/ command: jupyterhub --no-ssl --config /srv/jupyterhub/conf/jupyterhub_config.py # Cerebral Cortex backend kafka: image: wurstmeister/kafka:0.11.0.0 container_name: md2k-kafka restart: always ports: - "9092:9092" environment: KAFKA_ADVERTISED_HOST_NAME: ${MACHINE_IP:-0.0.0.0} KAFKA_ADVERTISED_PORT: 9092 KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 KAFKA_MESSAGE_MAX_BYTES: 2000000 KAFKA_CREATE_TOPICS: "hdfs_filequeue:20:1" KAFKA_AUTO_CREATE_TOPICS_ENABLE: 'true' volumes: - /var/run/docker.sock:/var/run/docker.sock - data-storage:/kafka depends_on: - zookeeper zookeeper: image: wurstmeister/zookeeper container_name: md2k-zookeeper restart: always ports: - "2181:2181" mysql: image: "mysql:5.7" container_name: md2k-mysql restart: always ports: - 3306:3306 # Default mysql port environment: - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD:-pass} - MYSQL_DATABASE=${MYSQL_DATABASE:-cerebralcortex} - MYSQL_USER=${MYSQL_USER:-cerebralcortex} - MYSQL_PASSWORD=${MYSQL_PASSWORD:-cerebralcortex_pass} volumes: - ./mysql/initdb.d:/docker-entrypoint-initdb.d - metadata-storage:/var/lib/mysql minio: image: "minio/minio" container_name: md2k-minio restart: always ports: - 9000:9000 # Default minio port environment: - MINIO_ACCESS_KEY=${MINIO_ACCESS_KEY:-ZngmrLWgbSfZUvgocyeH} - MINIO_SECRET_KEY=${MINIO_SECRET_KEY:-IwUnI5w0f5Hf1v2qVwcr} command: server /export volumes: - ./minio:/export cassandra: build: ./cassandra container_name: md2k-cassandra restart: always ports: - 9160:9160 # Thrift client API - 9042:9042 # CQL native transport environment: - CASSANDRA_CLUSTER_NAME=cerebralcortex volumes: - data-storage:/var/lib/cassandra volumes: object-storage: metadata-storage: data-storage: temp-storage: timeseries-storage: user-storage: log-storage: