#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}' services: mysql: image: bitnami/mysql:latest ports: - '${MYSQL_PORT}:3306' container_name: mysql volumes: - '${DATA_DIR}/components/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: arm64v8/mongo:7.0-rc-jammy # image: bitnami/mongodb:latest image: mongo:7.0-rc-jammy ports: - '${MONGO_PORT}:27017' 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' - ./scripts/mongo-init.sh:/bitnami/scripts/mongo-init.sh:ro # - ./scripts/mongo-init.sh:/docker-entrypoint-initdb.d/mongo-init.sh:ro" environment: - TZ=Asia/Shanghai - wiredTigerCacheSizeGB=1 - MONGO_INITDB_ROOT_USERNAME=${MONGO_USERNAME} - MONGO_INITDB_ROOT_PASSWORD=${MONGO_PASSWORD} - MONGO_INITDB_DATABASE=${MONGO_DATABASE} restart: always networks: server: ipv4_address: ${MONGO_NETWORK_ADDRESS} redis: image: bitnami/redis:latest user: root container_name: redis ports: - '${REDIS_PORT}:6379' volumes: - '${DATA_DIR}/components/redis/data:/data' - '${DATA_DIR}/components/redis/config/redis.conf:/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: 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: 'bitnami/kafka:3.5.1' image: 'bitnami/kafka:latest' container_name: kafka user: root # user: nfsnobody restart: always ports: - '${KAFKA_PORT}:9094' volumes: - ./scripts/create_topic.sh:/opt/bitnami/kafka/create_topic.sh - ${DATA_DIR}/components/kafka:/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_CFG_NODE_ID=0 - KAFKA_CFG_PROCESS_ROLES=controller,broker - KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=0@:9093 - KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,CONTROLLER://:9093,EXTERNAL://:9094 # - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://kafka:9092,EXTERNAL://${DOCKER_BRIDGE_GATEWAY}:${KAFKA_PORT} - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://kafka:9092,EXTERNAL://127.0.0.1:${KAFKA_PORT} # KAFKA_ADVERTISED_LISTENERS: INSIDE://127.0.0.1:9092,OUTSIDE://127.0.0.1:9092 # KAFKA_LISTENERS: INSIDE://:9092,OUTSIDE://:9093 # KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: "INSIDE:PLAINTEXT,OUTSIDE:PLAINTEXT" - KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CONTROLLER:PLAINTEXT,EXTERNAL:PLAINTEXT,PLAINTEXT:PLAINTEXT - KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER # - KAFKA_CLIENT_USERS=user1 # - KAFKA_CLIENT_PASSWORDS=123 networks: server: ipv4_address: ${KAFKA_NETWORK_ADDRESS} minio: image: minio/minio user: root ports: - '${MINIO_PORT}:9000' - '9090:9090' container_name: minio volumes: - '${DATA_DIR}/components/mnt/data:/data' - '${DATA_DIR}/components/mnt/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:latest # # image: registry.cn-hangzhou.aliyuncs.com/openimsdk/openim-web:latest # # image: openim/openim-web:latest # image: ${IMAGE_REGISTRY}/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 # image: ${IMAGE_REGISTRY}/openim-server:main # # build: . # container_name: openim-server # ports: # - ${OPENIM_WS_PORT}:10001 # - ${API_OPENIM_PORT}:10002 # healthcheck: # test: ["CMD", "/openim/openim-server/scripts/check-all.sh"] # interval: 300s # timeout: 10s # retries: 5 # volumes: # - ./logs:/openim/openim-server/logs # - ./_output/logs:/openim/openim-server/_output/logs # - ./config:/openim/openim-server/config # - ./scripts:/openim/openim-server/scripts # restart: always # depends_on: # - kafka # - mysql # - mongodb # - redis # - minio # logging: # driver: json-file # options: # max-size: "1g" # max-file: "2" # networks: # server: # ipv4_address: ${OPENIM_SERVER_NETWORK_ADDRESS} # prometheus: # image: prom/prometheus # volumes: # - ./.docker-compose_cfg/prometheus-compose.yml:/etc/prometheus/prometheus.yml # container_name: prometheus # ports: # - ${PROMETHEUS_PORT}:9091 # depends_on: # - openim-server # command: --web.listen-address=:9091 --config.file="/etc/prometheus/prometheus.yml" # networks: # openim-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 # container_name: grafana # ports: # - ${GRAFANA_PORT}:3000 # depends_on: # - prometheus # networks: # openim-server: # ipv4_address: ${GRAFANA_NETWORK_ADDRESS}