From 0dd3d96920a4b5dcb2ec01a9100912a6d440ec05 Mon Sep 17 00:00:00 2001 From: "Xinwei Xiong(cubxxw-openim)" <3293172751nss@gmail.com> Date: Sat, 2 Sep 2023 19:55:01 +0800 Subject: [PATCH] feat: set config file path Signed-off-by: Xinwei Xiong(cubxxw-openim) <3293172751nss@gmail.com> --- .env | 52 ++++---- config/config.yaml | 51 ++++---- deployments/templates/chat.yaml | 1 - docker-compose.yml | 225 +++++++++++++++++++++++--------- 4 files changed, 214 insertions(+), 115 deletions(-) diff --git a/.env b/.env index baa04633f..171f69d86 100644 --- a/.env +++ b/.env @@ -12,7 +12,7 @@ PASSWORD=openIM123 # Endpoint for the MinIO object storage service. # Default: MINIO_ENDPOINT=http://172.28.0.1:10005 -MINIO_ENDPOINT=http://172.28.0.1:10005 +MINIO_ENDPOINT=http://172.29.0.1:10005 # Base URL for the application programming interface (API). # Default: API_URL=http://172.28.0.1:10002 @@ -20,7 +20,7 @@ API_URL=http://14.153.6.114:10002 # Directory path for storing data files or related information. # Default: DATA_DIR=./ -DATA_DIR=/root/workspaces/openim/openim-docker/openim-server/main +DATA_DIR=/root/workspaces/openim/openim-server # ====================================== # ========= Network Configuration ====== @@ -28,55 +28,55 @@ DATA_DIR=/root/workspaces/openim/openim-docker/openim-server/main # Subnet for the Docker network. # Default: DOCKER_BRIDGE_SUBNET=172.28.0.0/16 -DOCKER_BRIDGE_SUBNET=172.28.0.0/16 +DOCKER_BRIDGE_SUBNET=172.29.0.0/16 # Gateway for the Docker network. # Default: DOCKER_BRIDGE_GATEWAY=172.28.0.1 -DOCKER_BRIDGE_GATEWAY=172.28.0.1 +DOCKER_BRIDGE_GATEWAY=172.29.0.1 # Address or hostname for the MySQL network. # Default: MYSQL_NETWORK_ADDRESS=172.28.0.2 -MYSQL_NETWORK_ADDRESS=172.28.0.2 +MYSQL_NETWORK_ADDRESS=172.29.0.2 # Address or hostname for the MongoDB network. # Default: MONGO_NETWORK_ADDRESS=172.28.0.3 -MONGO_NETWORK_ADDRESS=172.28.0.3 +MONGO_NETWORK_ADDRESS=172.29.0.3 # Address or hostname for the Redis network. # Default: REDIS_NETWORK_ADDRESS=172.28.0.4 -REDIS_NETWORK_ADDRESS=172.28.0.4 +REDIS_NETWORK_ADDRESS=172.29.0.4 # Address or hostname for the Kafka network. # Default: KAFKA_NETWORK_ADDRESS=172.28.0.5 -KAFKA_NETWORK_ADDRESS=172.28.0.5 +KAFKA_NETWORK_ADDRESS=172.29.0.5 # Address or hostname for the ZooKeeper network. # Default: ZOOKEEPER_NETWORK_ADDRESS=172.28.0.6 -ZOOKEEPER_NETWORK_ADDRESS=172.28.0.6 +ZOOKEEPER_NETWORK_ADDRESS=172.29.0.6 # Address or hostname for the MinIO network. # Default: MINIO_NETWORK_ADDRESS=172.28.0.7 -MINIO_NETWORK_ADDRESS=172.28.0.7 +MINIO_NETWORK_ADDRESS=172.29.0.7 # Address or hostname for the OpenIM web network. # Default: OPENIM_WEB_NETWORK_ADDRESS=172.28.0.8 -OPENIM_WEB_NETWORK_ADDRESS=172.28.0.8 +OPENIM_WEB_NETWORK_ADDRESS=172.29.0.8 # Address or hostname for the OpenIM server network. # Default: OPENIM_SERVER_NETWORK_ADDRESS=172.28.0.9 -OPENIM_SERVER_NETWORK_ADDRESS=172.28.0.9 +OPENIM_SERVER_NETWORK_ADDRESS=172.29.0.9 # Address or hostname for the OpenIM chat network. # Default: OPENIM_CHAT_NETWORK_ADDRESS=172.28.0.10 -OPENIM_CHAT_NETWORK_ADDRESS=172.28.0.10 +OPENIM_CHAT_NETWORK_ADDRESS=172.29.0.10 # Address or hostname for the Prometheus network. # Default: PROMETHEUS_NETWORK_ADDRESS=172.28.0.11 -PROMETHEUS_NETWORK_ADDRESS=172.28.0.11 +PROMETHEUS_NETWORK_ADDRESS=172.29.0.11 # Address or hostname for the Grafana network. # Default: GRAFANA_NETWORK_ADDRESS=172.28.0.12 -GRAFANA_NETWORK_ADDRESS=172.28.0.12 +GRAFANA_NETWORK_ADDRESS=172.29.0.12 # =============================================== @@ -87,7 +87,7 @@ GRAFANA_NETWORK_ADDRESS=172.28.0.12 # ----- ZooKeeper Configuration ----- # Address or hostname for the ZooKeeper service. # Default: ZOOKEEPER_ADDRESS=172.28.0.1 -ZOOKEEPER_ADDRESS=172.28.0.6 +ZOOKEEPER_ADDRESS=172.29.0.6 # Port for ZooKeeper service. # Default: ZOOKEEPER_PORT=12181 @@ -97,7 +97,7 @@ ZOOKEEPER_PORT=12181 # Address or hostname for the MySQL service. # Default: MYSQL_ADDRESS=172.28.0.1 -MYSQL_ADDRESS=172.28.0.2 +MYSQL_ADDRESS=172.29.0.2 # Port on which MySQL database service is running. # Default: MYSQL_PORT=13306 @@ -110,7 +110,7 @@ MYSQL_PASSWORD=openIM123 # ----- MongoDB Configuration ----- # Address or hostname for the MongoDB service. # Default: MONGO_ADDRESS=172.28.0.1 -MONGO_ADDRESS=172.28.0.3 +MONGO_ADDRESS=172.29.0.3 # Port on which MongoDB service is running. # Default: MONGO_PORT=37017 @@ -131,7 +131,7 @@ MONGO_DATABASE=openIM_v3 # ----- Redis Configuration ----- # Address or hostname for the Redis service. # Default: REDIS_ADDRESS=172.28.0.1 -REDIS_ADDRESS=172.28.0.4 +REDIS_ADDRESS=172.29.0.4 # Port on which Redis in-memory data structure store is running. # Default: REDIS_PORT=16379 @@ -144,7 +144,7 @@ REDIS_PASSWORD=openIM123 # ----- Kafka Configuration ----- # Address or hostname for the Kafka service. # Default: KAFKA_ADDRESS=172.28.0.1 -KAFKA_ADDRESS=172.28.0.5 +KAFKA_ADDRESS=172.29.0.5 # Port on which Kafka distributed streaming platform is running. # Default: KAFKA_PORT=19092 @@ -165,7 +165,7 @@ KAFKA_OFFLINEMSG_MONGO_TOPIC=offlineMsgToMongoMysql # ----- MinIO Configuration ---- # Address or hostname for the MinIO object storage service. # Default: MINIO_ADDRESS=172.28.0.1 -MINIO_ADDRESS=172.28.0.7 +MINIO_ADDRESS=172.29.0.7 # Port on which MinIO object storage service is running. # Default: MINIO_PORT=10005 @@ -182,7 +182,7 @@ MINIO_SECRET_KEY=openIM123 # ----- Prometheus Configuration ----- # Address or hostname for the Prometheus service. # Default: PROMETHEUS_ADDRESS=172.28.0.1 -PROMETHEUS_ADDRESS=172.28.0.11 +PROMETHEUS_ADDRESS=172.29.0.11 # Port on which Prometheus service is running. # Default: PROMETHEUS_PORT=19090 @@ -191,7 +191,7 @@ PROMETHEUS_PORT=19090 # ----- Grafana Configuration ----- # Address or hostname for the Grafana service. # Default: GRAFANA_ADDRESS=172.28.0.1 -GRAFANA_ADDRESS=172.28.0.12 +GRAFANA_ADDRESS=172.29.0.12 # Port on which Grafana service is running. # Default: GRAFANA_PORT=3000 @@ -211,7 +211,7 @@ OPENIM_WEB_PORT=11001 # Address or hostname for the OpenIM web service. # Default: OPENIM_WEB_ADDRESS=172.28.0.1 -OPENIM_WEB_ADDRESS=172.28.0.8 +OPENIM_WEB_ADDRESS=172.29.0.8 # ====================================== @@ -220,7 +220,7 @@ OPENIM_WEB_ADDRESS=172.28.0.8 # Address or hostname for the OpenIM server. # Default: OPENIM_SERVER_ADDRESS=172.28.0.1 -OPENIM_SERVER_ADDRESS=172.28.0.9 +OPENIM_SERVER_ADDRESS=172.29.0.9 # Port for the OpenIM WebSockets. # Default: OPENIM_WS_PORT=10001 @@ -241,7 +241,7 @@ CHAT_BRANCH=main # Address or hostname for the OpenIM chat service. # Default: OPENIM_CHAT_ADDRESS=172.28.0.1 -OPENIM_CHAT_ADDRESS=172.28.0.10 +OPENIM_CHAT_ADDRESS=172.29.0.10 # Port for the OpenIM chat API. # Default: OPENIM_CHAT_API_PORT=10008 diff --git a/config/config.yaml b/config/config.yaml index c23b094ff..983e0b665 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -28,9 +28,9 @@ # Zookeeper password zookeeper: schema: openim - address: [ 127.0.0.1:2181 ] - username: - password: + address: [ 172.29.0.1:12181 ] + username: '' + password: '' ###################### Mysql ###################### # MySQL configuration @@ -42,7 +42,7 @@ zookeeper: # Log level: 1=slient, 2=error, 3=warn, 4=info # Slow query threshold in milliseconds mysql: - address: [ 127.0.0.1:13306 ] + address: [ 172.29.0.1:13306 ] username: root password: openIM123 database: openIM_v3 @@ -60,8 +60,8 @@ mysql: # Default MongoDB database name # Maximum connection pool size mongo: - uri: - address: [ 127.0.0.1:37017 ] + uri: '' + address: [ 172.29.0.1:37017 ] database: openIM_v3 username: root password: openIM123 @@ -72,8 +72,8 @@ mongo: # # Username is required only for Redis version 6.0+ redis: - address: [ 127.0.0.1:16379 ] - username: + address: [ 172.29.0.1:16379 ] + username: '' password: openIM123 ###################### Kafka configuration information ###################### @@ -84,9 +84,9 @@ redis: # It's not recommended to modify this topic name # Consumer group ID, it's not recommended to modify kafka: - username: - password: - addr: [ 127.0.0.1:9092 ] + username: '' + password: '' + addr: [ 172.29.0.1:19092 ] latestMsgToRedis: topic: "latestMsgToRedis" offlineMsgToMongo: @@ -105,7 +105,7 @@ kafka: # IP address to register with zookeeper when starting RPC, the IP and corresponding rpcPort should be accessible by api/gateway # Default listen IP is 0.0.0.0 rpc: - registerIP: + registerIP: '' listenIP: 0.0.0.0 ###################### API configuration information ###################### @@ -132,26 +132,27 @@ api: # minio.signEndpoint is minio public network address object: enable: "minio" - apiURL: "http://127.0.0.1:10002" + apiURL: "http://14.153.6.114:10002" minio: bucket: "openim" - endpoint: "http://127.0.0.1:10005" + endpoint: "http://172.29.0.1:10005" accessKeyID: "root" secretAccessKey: "openIM123" - sessionToken: "" - signEndpoint: "http://127.0.0.1:10005" + sessionToken: '' + signEndpoint: "http://14.153.6.114:10005" cos: - bucketURL: "https://temp-1252357374.cos.ap-chengdu.myqcloud.com" - secretID: "" - secretKey: "" - sessionToken: "" + bucketURL: https://temp-1252357374.cos.ap-chengdu.myqcloud.com + secretID: '' + secretKey: '' + sessionToken: '' oss: endpoint: "https://oss-cn-chengdu.aliyuncs.com" bucket: "demo-9999999" bucketURL: "https://demo-9999999.oss-cn-chengdu.aliyuncs.com" - accessKeyID: "" - accessKeySecret: "" - sessionToken: "" + accessKeyID: '' + accessKeySecret: '' + sessionToken: '' + ###################### RPC Port Configuration ###################### # RPC service ports @@ -193,11 +194,11 @@ rpcRegisterName: # Whether to output in json format # Whether to include stack trace in logs log: - storageLocation: ../../../../../logs/ + storageLocation: /root/workspaces/openim/openim-server/logs/ rotationTime: 24 remainRotationCount: 2 remainLogLevel: 6 - isStdout: false + isStdout: false isJson: false withStack: false diff --git a/deployments/templates/chat.yaml b/deployments/templates/chat.yaml index 4a71e8411..ed06f7206 100644 --- a/deployments/templates/chat.yaml +++ b/deployments/templates/chat.yaml @@ -89,7 +89,6 @@ verifyCode: #proxyHeader: "X-Forwarded-For" ###################### Admin List ###################### -adminList: adminList: - adminID: admin1 nickname: chat1 diff --git a/docker-compose.yml b/docker-compose.yml index e89fc4a80..ac8cd8d80 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,6 +1,38 @@ #fixme Clone openIM Server project before using docker-compose,project address:https://github.com/OpenIMSDK/Open-IM-Server.git version: '3' +networks: + server: + driver: bridge + ipam: + driver: default + config: + - subnet: '${DOCKER_BRIDGE_SUBNET}' + gateway: '${DOCKER_BRIDGE_GATEWAY}' + +volumes: + mysql_data: + mongodb_data: + mongodb_logs: + mongodb_config: + redis_data: + redis_config: + kafka_data: + minio_data: + minio_config: + openim_server_logs: + openim_server_output: + openim_server_config: + openim_server_scripts: + openim_chat_logs: + openim_chat_output: + openim_chat_config: + openim_chat_scripts: + openim_server_prometheus_config: + openim_server_grafana_datasource: + openim_server_grafana_config: + openim_server_grafana_dashboard: + services: mysql: image: mysql:5.7 @@ -8,11 +40,14 @@ services: - "${MYSQL_PORT}:3306" container_name: mysql volumes: - - "${DATA_DIR}/components/mysql/data:/var/lib/mysql" + - mysql_data:/var/lib/mysql - "/etc/localtime:/etc/localtime" environment: MYSQL_ROOT_PASSWORD: "${MYSQL_PASSWORD}" restart: always + networks: + server: + ipv4_address: ${MYSQL_NETWORK_ADDRESS} mongodb: image: mongo:6.0.2 @@ -21,9 +56,9 @@ services: container_name: mongo command: --wiredTigerCacheSizeGB 1 --auth volumes: - - "${DATA_DIR}/components/mongodb/data/db:/data/db" - - "${DATA_DIR}/components/mongodb/data/logs:/data/logs" - - "${DATA_DIR}/components/mongodb/data/conf:/etc/mongo" + - mongodb_data:/data/db + - mongodb_logs:/data/logs + - mongodb_config:/etc/mongo - "./scripts/mongo-init.sh:/docker-entrypoint-initdb.d/mongo-init.sh:ro" environment: - TZ=Asia/Shanghai @@ -32,52 +67,68 @@ services: - MONGO_INITDB_ROOT_PASSWORD=${MONGO_PASSWORD} - MONGO_INITDB_DATABASE=${MONGO_DATABASE} restart: always + networks: + server: + ipv4_address: ${MONGO_NETWORK_ADDRESS} redis: image: redis:7.0.0 + container_name: redis ports: - "${REDIS_PORT}:6379" - container_name: redis volumes: - - "${DATA_DIR}/components/redis/data:/data" - - "${DATA_DIR}/components/redis/config/redis.conf:/usr/local/redis/config/redis.conf" + - redis_data:/data + - redis_config:/usr/local/redis/config/redis.conf environment: TZ: Asia/Shanghai restart: always sysctls: net.core.somaxconn: 1024 command: redis-server --requirepass ${REDIS_PASSWORD} --appendonly yes + networks: + server: + ipv4_address: ${REDIS_NETWORK_ADDRESS} zookeeper: - image: wurstmeister/zookeeper - ports: - - "${ZOOKEEPER_PORT}:2181" - container_name: zookeeper - volumes: - - "/etc/localtime:/etc/localtime" - environment: - TZ: Asia/Shanghai - restart: always - network_mode: "host" + image: bitnami/zookeeper:3.8 + container_name: zookeeper + ports: + - "${ZOOKEEPER_PORT}:2181" + volumes: + - "/etc/localtime:/etc/localtime" + environment: + - ALLOW_ANONYMOUS_LOGIN=yes + - TZ="Asia/Shanghai" + restart: always + networks: + server: + ipv4_address: ${ZOOKEEPER_NETWORK_ADDRESS} kafka: - image: wurstmeister/kafka + image: 'bitnami/kafka:latest' container_name: kafka + user: root restart: always ports: - - "${KAFKA_PORT}:9092" + - "${KAFKA_PORT}:9092" + volumes: + - ./scripts/create_topic.sh:/opt/bitnami/kafka/create_topic.sh + - kafka_data:/bitnami/kafka + command: > + bash -c " + /opt/bitnami/scripts/kafka/run.sh & sleep 5; /opt/bitnami/kafka/create_topic.sh; wait + " environment: - TZ: Asia/Shanghai - KAFKA_BROKER_ID: 0 - KAFKA_ZOOKEEPER_CONNECT: "${ZOOKEEPER_ADDRESS}:${ZOOKEEPER_PORT}" - KAFKA_CREATE_TOPICS: "${KAFKA_LATESTMSG_REDIS_TOPIC}:8:1,${KAFKA_MSG_PUSH_TOPIC}:8:1,${KAFKA_OFFLINEMSG_MONGO_TOPIC}:8:1" - KAFKA_ADVERTISED_LISTENERS: INSIDE://${KAFKA_ADDR}:${KAFKA_PORT},OUTSIDE://CHANGE_TO_YOUR_EXTERNAL_IP:${KAFKA_PORT} - KAFKA_LISTENERS: INSIDE://:9092,OUTSIDE://:9093 - KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: "INSIDE:PLAINTEXT,OUTSIDE:PLAINTEXT" - KAFKA_INTER_BROKER_LISTENER_NAME: INSIDE - depends_on: - - zookeeper - network_mode: "host" + - KAFKA_CFG_NODE_ID=0 + - TZ=Asia/Shanghai + - KAFKA_CFG_PROCESS_ROLES=controller,broker + - KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,CONTROLLER://:9093 + - KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT + - KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=0@kafka:9093 + - KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER + networks: + server: + ipv4_address: ${KAFKA_NETWORK_ADDRESS} minio: image: minio/minio @@ -86,80 +137,128 @@ services: - "9090:9090" container_name: minio volumes: - - "${DATA_DIR}/components/mnt/data:/data" - - "${DATA_DIR}/components/mnt/config:/root/.minio" + - minio_data:/data + - minio_config:/root/.minio environment: MINIO_ROOT_USER: "${MINIO_ACCESS_KEY}" MINIO_ROOT_PASSWORD: "${MINIO_SECRET_KEY}" restart: always command: minio server /data --console-address ':9090' + networks: + server: + ipv4_address: ${MINIO_NETWORK_ADDRESS} - # openim-web: - # image: ghcr.io/openimsdk/openim-web:main - # container_name: openim-web - # environment: - # - OPENIM_WEB_DIST_PATH=${OPENIM_WEB_DIST_PATH} - # - OPENIM_WEB_PPRT=${OPENIM_WEB_PPRT} - # restart: always - # ports: - # - "${OPENIM_WEB_PPRT}:11001" + openim-web: + image: ghcr.io/openimsdk/openim-web:latest + container_name: openim-web + environment: + - OPENIM_WEB_DIST_PATH=${OPENIM_WEB_DIST_PATH} + - OPENIM_WEB_PORT=${OPENIM_WEB_PORT} + restart: always + ports: + - "${OPENIM_WEB_PORT}:11001" + networks: + server: + ipv4_address: ${OPENIM_WEB_NETWORK_ADDRESS} openim-server: # image: ghcr.io/openimsdk/openim-server:main image: registry.cn-hangzhou.aliyuncs.com/openimsdk/openim-server:main # image: openim/openim-server:main +# build: . container_name: openim-server + ports: + - ${OPENIM_WS_PORT}:10001 + - ${API_OPENIM_PORT}:10002 healthcheck: - test: ["CMD", "./scripts/check-all.sh"] - interval: 30s + test: ["CMD", "/openim/openim-server/scripts/check-all.sh"] + interval: 300s timeout: 10s retries: 5 volumes: - - ./logs:/openim/openim-server/logs - - ./config:/openim/openim-server/config - - ./scripts:/openim/openim-server/scripts + - openim_server_logs:/openim/openim-server/logs + - openim_server_output:/openim/openim-server/_output + - openim_server_config:/openim/openim-server/config + - openim_server_scripts:/openim/openim-server/scripts restart: always depends_on: - - zookeeper - kafka - mysql - mongodb - redis - minio - network_mode: "host" logging: driver: json-file options: max-size: "1g" max-file: "2" + networks: + server: + ipv4_address: ${OPENIM_SERVER_NETWORK_ADDRESS} + + # openim-chat: + # # image: ghcr.io/openimsdk/openim-chat:main + # image: registry.cn-hangzhou.aliyuncs.com/openimsdk/openim-chat:main + # # image: ghcr.io/openimsdk/openim-chat:main + # container_name: openim-chat + # healthcheck: + # test: ["CMD", "/openim/openim-chat/scripts/check_all.sh"] + # interval: 300s + # timeout: 10s + # retries: 5 + # ports: + # - ${OPENIM_CHAT_API_PORT}:10008 + # - ${OPENIM_ADMIN_API_PORT}:10009 + # volumes: + # - openim_chat_logs:/openim/openim-chat/logs + # - openim_chat_output:/openim/openim-chat/_output + # - openim_chat_config:/openim/openim-chat/config + # - openim_chat_scripts:/openim/openim-chat/scripts + # restart: always + # user: root:root + # depends_on: + # - mysql + # - mongodb + # - redis + # - minio + # - server + # logging: + # driver: json-file + # options: + # max-size: "1g" + # max-file: "2" + # networks: + # server: + # ipv4_address: ${OPENIM_CHAT_NETWORK_ADDRESS} prometheus: image: prom/prometheus volumes: - - ./.docker-compose_cfg/prometheus-compose.yml:/etc/prometheus/prometheus.yml + - openim_server_prometheus_config:/etc/prometheus container_name: prometheus - # ports: - # - 9091:9091 - depends_on: - - openim-server - command: --web.listen-address=:9091 --config.file="/etc/prometheus/prometheus.yml" - network_mode: "host" + ports: + - ${PROMETHEUS_PORT}:9091 + command: --web.listen-address=:9091 --config.file="/etc/prometheus" + networks: + server: + ipv4_address: ${PROMETHEUS_NETWORK_ADDRESS} grafana: image: grafana/grafana volumes: - - ./.docker-compose_cfg/datasource-compose.yaml:/etc/grafana/provisioning/datasources/datasource.yaml - - ./.docker-compose_cfg/grafana.ini:/etc/grafana/grafana.ini - - ./.docker-compose_cfg/node-exporter-full_rev1.json:/var/lib/grafana/dashboards/node-exporter-full_rev1.json + - openim_server_grafana_datasource:/etc/grafana/provisioning/datasources + - openim_server_grafana_config:/etc/grafana + - openim_server_grafana_dashboard:/var/lib/grafana/dashboards container_name: grafana - depends_on: - - prometheus - network_mode: "host" - + ports: + - ${GRAFANA_PORT}:3000 + networks: + server: + ipv4_address: ${GRAFANA_NETWORK_ADDRESS} # node-exporter: # image: quay.io/prometheus/node-exporter # container_name: node-exporter # restart: always # ports: - # - "9100:9100" \ No newline at end of file + # - "9100:9100"