版本

# Docker部署


# 环境要求

# 硬件环境

# 系统环境

  • OS: CentOS 7+、Ubuntu 16+
  • docker: docker-ce 20+
  • docker-compose: 1.20+(可选,用于管理整体项目的部署)

# 依赖项

  • elasticsearch
  • mysql

# eZooDB

以下示例内容所使用的构建包,是基于CentOS8、32G内存的环境

# 镜像源

获取到压缩包后加载镜像

docker load -i xxx.tar

# 仅启动图数据库

镜像包括eZooDB、eZoo-Studio,可以仅启动图数据库,不启动图平台

启动镜像时,需要指定端口映射和图数据数据卷映射以及可选的环境变量配置,启动命令如下

docker run -d \
-p 9090:9090 -p 9898:9898 \
-e EZOO_SERVER_TYPE=STANDALONE \
-e STUDIO_SERVER_HOST=xxx \ #指定图平台部署的nginx地址,例如 http://192.168.1.11
-v /data/ezoodb/data:/var/lib/ezoodb/data \
-v /data/ezoodb/log:/var/lib/ezoodb/log \
--user 0 \
--name ezoodb ezoodbmerge:1.0

# 启动图数据库和图平台

# 依赖项配置

完成依赖项的配置:mysql、es,主要需要配置mysql和es的连接信息,通过环境变量配置,需要指定的环境变量如下所示
推荐使用docker集群的方式启动服务,启动时为图平台配置单独的es和mysql

MYSQL_URL: MySQL连接地址,默认为jdbc:mysql://127.0.0.1:3306/ezoo_service?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false
MYSQL_USER: MySQL用户,默认为root
MYSQL_PASS: MySQL密码,默认为root
ELASTICSEARCH_URL: es连接地址,格式为host:port
ELASTICSEARCH_SCHEMA: 访问es的schema,默认为http
# 注意,如果es未开启认证,下面的环境变量可以无需配置
ELASTICSEARCH_USER: es开启认证后访问es的用户名,默认为elastic
ELASTICSEARCH_PASS: es开启认证后访问es的密码,默认为ezoo123456
# 全部可选的环境变量
STUDIO_SERVER_HOST: 前端nginx服务绑定的ip
EZOO_SERVER_TYPE: ezoodb服务类型,单点(STANDALONE)或者集群(REPLICASET),默认为单点
EZOO_CONFIG_FILE_PATH: 可以手动映射图配置文件进入容器后指定配置文件路径,推荐不设置
MYSQL_URL: MySQL连接地址,默认为jdbc:mysql://127.0.0.1:3306/ezoo_service?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false
MYSQL_USER: MySQL用户,默认为root
MYSQL_PASS: MySQL密码,默认为root
ELASTICSEARCH_URL: es连接地址,格式为host:port
ELASTICSEARCH_SCHEMA: 访问es的schema,默认为http
ELASTICSEARCH_USER: es开启认证后访问es的用户名
ELASTICSEARCH_PASS: es开启认证后访问es的密码
EZOODB_USER: 图数据库用户名,默认为root
EZOODB_PASS: 图数据库password,默认为 123456
CORN_ENABLED: 是否开启服务端定时任务,包括数据同步等定时任务
# 端口设置

docker启动时需要开放9090、9898、9000、80端口

  • 9090:用于tcp连接图数据库
  • 9898:用于http连接图数据库
  • 9000:用于访问图后端服务的http api
  • 80:用于访问图控制平台

# 启动docker集群

提供docker-compose.yml配置文件和各个服务的自定义配置文件,通过docker-compose命令对整体服务进行管理
主要包括用于监控服务器状态的elk集群以及用于图平台数据存储的mysql数据库,详细说明请查看下面的配置文件示例

# 配置文件示例
version: "3"  #版本号
volumes: # 指定挂载图数据的挂载卷
  ezoo-data:
    name: ezoo-data
    driver: local
    driver_opts:
      o: bind
      type: none
      device: /data/ezoodb

services: # 指定要启动的服务
  # elasticsearch,用于图平台的点sug等,需要使用图平台必须添加
  elasticsearch:  #服务名称(不是容器名)
    image: elasticsearch:7.17.2  #使用的镜像
    restart: "always"   #重启策略,能够使服务器始终运行,生产环境推荐使用
    environment:
      - discovery.type=single-node
      - xpack.security.enabled=true
      - ELASTIC_PASSWORD=ezoo123456
      - "ES_JAVA_OPTS=-Xms512m -Xmx4096m"
    ports:
      - "9200:9200"
    container_name: elasticsearch  #容器名称
  # 下方的其他elk相关服务都用在图平台的监控上,不需要使用主机监控时无需启动
  kibana:
    image: kibana:7.17.2
    restart: "always"
    ports:
      - "5601:5601"
    container_name: kibana
    environment:
      - elasticsearch_url=elasricsearch:9200
    volumes:
      - ./configs/kibana.yml:/usr/share/kibana/config/kibana.yml
    links:
      - elasticsearch:elasticsearch  #容器关联elasticsearch是别名
    depends_on:
      - elasticsearch
  logstash:
    image: logstash:7.17.2
    restart: "always"
    container_name: logstash
    ports:
      - "5044:5044"
      - "5045:5045"
    volumes:
      - ./configs/ezoo_pattern:/usr/share/logstash/patterns/ezoo_pattern
      - ./configs/logstash-filebeat.conf:/usr/share/logstash/pipeline/logstash.conf
    depends_on:
      - elasticsearch
    links:
      - elasticsearch:elasticsearch
  filebeat:
    image: elastic/filebeat:7.17.2
    restart: "always"
    container_name: filebeat
    volumes:
      - ./configs/filebeat.yml:/usr/share/filebeat/filebeat.yml
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - /var/logs:/var/logs:ro
    user: "root"
    depends_on:
      - elasticsearch
      - kibana
      - logstash
    links:
      - logstash:logstash
      - kibana:kibana
  metricbeat:
    image: elastic/metricbeat:7.17.2
    restart: "always"
    container_name: metricbeat
    network_mode: host
    environment:
      - -system.hostfs=/hostfs
      - system.hostfs=/hostfs
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - /proc:/hostfs/proc:ro
      - /sys/fs/cgroup:/hostfs/sys/fs/cgroup:ro
      - /:/hostfs:ro
      - ./configs/mestricbeat.yml:/usr/share/metricbeat/metricbeat.yml
      - ./configs/modules.d:/usr/share/metricbeat/modules.d:ro
    user: "root"
  # 图数据库配置,指定后启动集成版的图数据库
  ezoodb:
    image: ezoodbmerge:1.0  #使用的镜像
    restart: "always"   #重启策略,能够使服务器始终运行,生产环境推荐使用
    environment:
      - MYSQL_URL=jdbc:mysql://127.0.0.1:3306/ezoo_service?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false
      - STUDIO_SERVER_HOST=http://192.168.1.11
    container_name: ezoodb  #容器名称
    # 指定前面配置的数据卷的挂载,将所有图数据都挂载出来
    volumes:
      - ezoo-data:/var/lib/ezoodb/
    # 主机共享网络,指定后无需再指定要映射的端口
    network_mode: host
    user: "root" #以root启动
    depends_on:
      - elasticsearch
      - mysql
  # 图平台需要使用mysql存储用户等信息,不使用图平台时无需配置
  mysql:
    image: mysql:5.7
    ports:
      - "3306:3306"
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: root
    volumes:
      - ./configs/ezoo_service.sql:/docker-entrypoint-initdb.d/1_ezoo_service.sql
      - {data_dir}/mysql:/var/lib/mysql
    container_name: mysql
最近一次更新时间: 2/27/2023, 10:35:47 AM