version: '3.6' services: ##----Start: EIS Base Images -- This Base images must be included for building any EIS servcies ---- ## Define ia_eisbase service ia_common: build: context: $PWD/../common dockerfile: $PWD/../common/dockerfiles/Dockerfile.common args: UBUNTU_IMAGE_VERSION: ${UBUNTU_IMAGE_VERSION} EIS_VERSION: ${EIS_VERSION} read_only: true image: ${DOCKER_REGISTRY}ia_common:${EIS_VERSION} ia_eisbase: depends_on: - ia_common build: context: $PWD/../common dockerfile: $PWD/../common/dockerfiles/Dockerfile.eisbase args: UBUNTU_IMAGE_VERSION: ${UBUNTU_IMAGE_VERSION} EIS_VERSION: ${EIS_VERSION} image: ${DOCKER_REGISTRY}ia_eisbase:${EIS_VERSION} ia_openvino_base: depends_on: - ia_eisbase build: context: $PWD/../common/openvino dockerfile: $PWD/../common/openvino/Dockerfile.openvino args: EIS_VERSION: ${EIS_VERSION} read_only: true image: ${DOCKER_REGISTRY}ia_openvino_base:${EIS_VERSION} ##----End: EIS Base Images---- -- This Base images must be included for building any EIS servcies ---- ## Define ETCD UI service - must be included to view ETCD data over web UI ia_etcd_ui: build: context: $PWD/../EtcdUI dockerfile: $PWD/../EtcdUI/Dockerfile args: ETCD_KEEPER_VERSION: ${ETCD_KEEPER_VERSION} EIS_VERSION: ${EIS_VERSION} read_only: true image: ${DOCKER_REGISTRY}ia_etcd_ui:${EIS_VERSION} container_name: ia_etcd_ui hostname: ia_etcd_ui network_mode: host restart: unless-stopped environment: AppName: "EtcdUi" DEV_MODE: ${DEV_MODE} user: ${EIS_UID} secrets: - ca_etcd - etcd_root_cert - etcd_root_key ##----Start: EIS Containers ---- ## Define VideoIngestion service ## Define telegraf service ia_telegraf: depends_on: - ia_eisbase build: context: $PWD/../Telegraf dockerfile: $PWD/../Telegraf/Dockerfile args: EIS_VERSION: ${EIS_VERSION} EIS_UID: ${EIS_UID} container_name: ia_telegraf hostname: ia_telegraf network_mode: host image: ${DOCKER_REGISTRY}ia_telegraf:${EIS_VERSION} restart: unless-stopped environment: AppName: "Telegraf" InfluxDbAppName: "InfluxDBConnector" CertType: "" DEV_MODE: ${DEV_MODE} no_proxy: ${no_proxy} volumes: - "./config/telegraf.conf:/etc/Telegraf/telegraf.conf" - "./config/telegraf_devmode.conf:/etc/Telegraf/telegraf_devmode.conf" user: ${EIS_UID} secrets: - ca_etcd - etcd_InfluxDBConnector_cert - etcd_InfluxDBConnector_key ## Define influxdb connector service ia_influxdbconnector: depends_on: - ia_eisbase build: context: $PWD/../InfluxDBConnector dockerfile: $PWD/../InfluxDBConnector/Dockerfile args: EIS_VERSION: ${EIS_VERSION} EIS_UID: ${EIS_UID} INFLUXDB_VERSION: ${INFLUXDB_VERSION} image: ${DOCKER_REGISTRY}ia_influxdbconnector:${EIS_VERSION} container_name: ia_influxdbconnector hostname: ia_influxdbconnector network_mode: host restart: unless-stopped environment: AppName: "InfluxDBConnector" CertType: "zmq,pem" DEV_MODE: ${DEV_MODE} PROFILING_MODE: ${PROFILING_MODE} no_proxy: ${no_proxy} # MessageBus Endpoint Configuration Clients: "Visualizer,DiscoveryCreek" Server: "zmq_tcp,127.0.0.1:8675" # Server: "zmq_ipc,${SOCKET_DIR}/" INFLUXDB_TLS_CIPHERS: ${TLS_CIPHERS} # Use IPC mode (zmq_ipc) when VideoIngestion, VideoAnalytics and Visualizer # based containers are running on the same host. If they are running on diff # host, please use TCP mode for communication. # Eg: Stream cfg for # IPC: zmq_ipc, # TPC: zmq_tcp, : SubTopics: "VideoAnalytics/camera1_stream_results,DiscoveryCreek/dc_point_data_results" dc_point_data_results_cfg: "zmq_tcp,127.0.0.1:65014" camera1_stream_results_cfg: "zmq_tcp,127.0.0.1:65013" PubTopics: "point_data,point_classifier_results" point_data_cfg: "zmq_tcp,127.0.0.1:65015" # point_data_cfg: "zmq_ipc,${SOCKET_DIR}/" point_classifier_results_cfg: "zmq_tcp,127.0.0.1:65016" volumes: - "${EIS_INSTALL_PATH}/data/influxdata:/influxdata" - "./config/influxdb.conf:/etc/influxdb/influxdb.conf" - "./config/influxdb_devmode.conf:/etc/influxdb/influxdb_devmode.conf" - "${EIS_INSTALL_PATH}/sockets:${SOCKET_DIR}" user: ${EIS_UID} secrets: - ca_etcd - etcd_InfluxDBConnector_cert - etcd_InfluxDBConnector_key # ## Define Discovery Creek service # ia_dc: # depends_on: # - ia_eisbase # build: # context: $PWD/../DiscoveryCreek/ # dockerfile: $PWD/../DiscoveryCreek/Dockerfile # args: # EIS_VERSION: ${EIS_VERSION} # EIS_UID: ${EIS_UID} # EIS_USER_NAME: ${EIS_USER_NAME} # image: ${DOCKER_REGISTRY}ia_dc:${EIS_VERSION} # container_name: ia_dc # hostname: ia_dc # network_mode: host # restart: unless-stopped # read_only: true # tmpfs: /tmp # environment: # AppName: "DiscoveryCreek" # DEV_MODE: ${DEV_MODE} # no_proxy: ${no_proxy} # # MessageBus Endpoint Configuration # Clients : "InfluxDBConnector,Visualizer" # CertType: "zmq" # # Use IPC mode (zmq_ipc) when VideoIngestion, VideoAnalytics and Visualizer # # based containers are running on the same host. If they are running on diff # # host, please use TCP mode for communication. # # Eg: Stream cfg for # # IPC: zmq_ipc, # # TPC: zmq_tcp, : # SubTopics: "InfluxDBConnector/point_data" # point_data_cfg: "zmq_tcp,127.0.0.1:65015" # PubTopics: "dc_point_data_results" # dc_point_data_results_cfg: "zmq_tcp,127.0.0.1:65014" # volumes: # - "${EIS_INSTALL_PATH}/sockets:${SOCKET_DIR}" # user: ${EIS_UID} # secrets: # - ca_etcd # - etcd_DiscoveryCreek_cert # - etcd_DiscoveryCreek_key ## Define DataAnalytics service ia_data_analytics: depends_on: - ia_eisbase build: context: $PWD/../TimeSeriesAnalytics/ dockerfile: $PWD/../TimeSeriesAnalytics/Dockerfile args: EIS_VERSION: ${EIS_VERSION} EIS_UID: ${EIS_UID} image: ${DOCKER_REGISTRY}ia_data_analytics:${EIS_VERSION} container_name: ia_data_analytics hostname: ia_data_analytics network_mode: host restart: unless-stopped environment: AppName: "Kapacitor" DEV_MODE: ${DEV_MODE} no_proxy: ${no_proxy} CertType: "pem" volumes: - "./config/kapacitor.conf:/etc/kapacitor/kapacitor.conf" - "./config/kapacitor_devmode.conf:/etc/kapacitor/kapacitor_devmode.conf" devices: - "/dev/dri" user: ${EIS_UID} secrets: - ca_etcd - etcd_Kapacitor_cert - etcd_Kapacitor_key # ## Define Imagestore service which hosts minio dbs # ia_imagestore: # depends_on: # - ia_eisbase # build: # context: $PWD/../ImageStore # dockerfile: $PWD/../ImageStore/Dockerfile # args: # EIS_VERSION: ${EIS_VERSION} # MINIO_VERSION: ${MINIO_VERSION} # EIS_UID: ${EIS_UID} # image: ${DOCKER_REGISTRY}ia_imagestore:${EIS_VERSION} # container_name: ia_imagestore # hostname: ia_imagestore # network_mode: host # restart: unless-stopped # environment: # AppName: "ImageStore" # DEV_MODE: ${DEV_MODE} # no_proxy: ${no_proxy} # # MessageBus Endpoint Configuration # # Uncomment the following line if using Discover history tool in PROD mode # # Clients: "Visualizer" # CertType: "zmq" # Server: "zmq_tcp,127.0.0.1:5669" # # Server: "zmq_ipc,${SOCKET_DIR}/" # # Use IPC mode (zmq_ipc) when VideoIngestion, VideoAnalytics and Visualizer # # based containers are running on the same host. If they are running on diff # # host, please use TCP mode for communication. # # Eg: Stream cfg for # # IPC: zmq_ipc, # # TPC: zmq_tcp, : # SubTopics: "VideoAnalytics/camera1_stream_results" # camera1_stream_results_cfg: "zmq_tcp,127.0.0.1:65013" # volumes: # - "${EIS_INSTALL_PATH}/data:/data" # - "${EIS_INSTALL_PATH}/sockets:${SOCKET_DIR}" # user: ${EIS_UID} # secrets: # - ca_etcd # - etcd_ImageStore_cert # - etcd_ImageStore_key # ## Define FactoryControlApp service # ia_factoryctrl_app: # depends_on: # - ia_eisbase # build: # context: $PWD/../FactoryControlApp # dockerfile: $PWD/../FactoryControlApp/Dockerfile # args: # EIS_VERSION: ${EIS_VERSION} # EIS_UID: ${EIS_UID} # EIS_USER_NAME: ${EIS_USER_NAME} # read_only: true # image: ${DOCKER_REGISTRY}ia_factoryctrl_app:${EIS_VERSION} # container_name: ia_factoryctrl_app # hostname: ia_factoryctrl_app # network_mode: host # restart: unless-stopped # environment: # AppName: "FactoryControlApp" # DEV_MODE: ${DEV_MODE} # # MessageBus Endpoint Configuration # CertType: "zmq" # # Use IPC mode (zmq_ipc) when VideoIngestion, VideoAnalytics and Visualizer # # based containers are running on the same host. If they are running on diff # # host, please use TCP mode for communication. # # Eg: Stream cfg for # # IPC: zmq_ipc, # # TPC: zmq_tcp, : # SubTopics: "VideoAnalytics/camera1_stream_results" # camera1_stream_results_cfg : "zmq_tcp,127.0.0.1:65013" # volumes: # - "${EIS_INSTALL_PATH}/sockets:${SOCKET_DIR}" # user: ${EIS_UID} # secrets: # - ca_etcd # - etcd_FactoryControlApp_cert # - etcd_FactoryControlApp_key # ## Define OpcuaExport service # ia_opcua_export: # depends_on: # - ia_eisbase # build: # context: $PWD/../OpcuaExport # dockerfile: $PWD/../OpcuaExport/Dockerfile # args: # EIS_VERSION: ${EIS_VERSION} # image: ${DOCKER_REGISTRY}ia_opcua_export:${EIS_VERSION} # container_name: ia_opcua_export # hostname: ia_opcua_export # network_mode: host # restart: unless-stopped # environment: # AppName: "OpcuaExport" # DEV_MODE: ${DEV_MODE} # no_proxy: ${no_proxy} # # MessageBus Endpoint Configuration # CertType: "zmq,der" # # Use IPC mode (zmq_ipc) when VideoIngestion, VideoAnalytics and Visualizer # # based containers are running on the same host. If they are running on diff # # host, please use TCP mode for communication. # # Eg: Stream cfg for # # IPC: zmq_ipc, # # TPC: zmq_tcp, : # PubTopics: "cam_serial1_results,cam_serial2_results" # OpcuaExportCfg: "opcua,localhost:65003" # SubTopics: "VideoAnalytics/camera1_stream_results" # camera1_stream_results_cfg: "zmq_tcp,127.0.0.1:65013" # volumes: # - "${EIS_INSTALL_PATH}/sockets:${SOCKET_DIR}" # user: ${EIS_UID} # secrets: # - ca_etcd # - etcd_OpcuaExport_cert # - etcd_OpcuaExport_key secrets: ca_etcd: file: provision/Certificates/ca/ca_certificate.pem etcd_FactoryControlApp_cert: file: provision/Certificates/FactoryControlApp/FactoryControlApp_client_certificate.pem etcd_FactoryControlApp_key: file: provision/Certificates/FactoryControlApp/FactoryControlApp_client_key.pem etcd_ImageStore_cert: file: provision/Certificates/ImageStore/ImageStore_client_certificate.pem etcd_ImageStore_key: file: provision/Certificates/ImageStore/ImageStore_client_key.pem etcd_InfluxDBConnector_cert: file: provision/Certificates/InfluxDBConnector/InfluxDBConnector_client_certificate.pem etcd_InfluxDBConnector_key: file: provision/Certificates/InfluxDBConnector/InfluxDBConnector_client_key.pem etcd_Kapacitor_cert: file: provision/Certificates/Kapacitor/Kapacitor_client_certificate.pem etcd_Kapacitor_key: file: provision/Certificates/Kapacitor/Kapacitor_client_key.pem etcd_OpcuaExport_cert: file: provision/Certificates/OpcuaExport/OpcuaExport_client_certificate.pem etcd_OpcuaExport_key: file: provision/Certificates/OpcuaExport/OpcuaExport_client_key.pem etcd_VideoAnalytics_cert: file: provision/Certificates/VideoAnalytics/VideoAnalytics_client_certificate.pem etcd_VideoAnalytics_key: file: provision/Certificates/VideoAnalytics/VideoAnalytics_client_key.pem etcd_VideoIngestion_cert: file: provision/Certificates/VideoIngestion/VideoIngestion_client_certificate.pem etcd_VideoIngestion_key: file: provision/Certificates/VideoIngestion/VideoIngestion_client_key.pem etcd_Visualizer_cert: file: provision/Certificates/Visualizer/Visualizer_client_certificate.pem etcd_Visualizer_key: file: provision/Certificates/Visualizer/Visualizer_client_key.pem etcd_DiscoveryCreek_cert: file: provision/Certificates/DiscoveryCreek/DiscoveryCreek_client_certificate.pem etcd_DiscoveryCreek_key: file: provision/Certificates/DiscoveryCreek/DiscoveryCreek_client_key.pem etcd_root_cert: file: provision/Certificates/root/root_client_certificate.pem etcd_root_key: file: provision/Certificates/root/root_client_key.pem