Files
open-im-server/docker-compose.yml
T

265 lines
6.9 KiB
YAML
Raw Normal View History

2023-08-29 18:03:37 +08:00
#fixme Clone openIM Server project before using docker-compose,project addresshttps://github.com/OpenIMSDK/Open-IM-Server.git
2023-08-30 11:32:12 +08:00
version: '3'
2023-09-02 19:55:01 +08:00
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:
2023-08-29 18:03:37 +08:00
services:
mysql:
image: mysql:5.7
ports:
2023-08-30 11:32:12 +08:00
- "${MYSQL_PORT}:3306"
2023-08-29 18:03:37 +08:00
container_name: mysql
volumes:
2023-09-02 19:55:01 +08:00
- mysql_data:/var/lib/mysql
2023-08-30 11:32:12 +08:00
- "/etc/localtime:/etc/localtime"
2023-08-29 18:03:37 +08:00
environment:
2023-08-30 11:32:12 +08:00
MYSQL_ROOT_PASSWORD: "${MYSQL_PASSWORD}"
2023-08-29 18:03:37 +08:00
restart: always
2023-09-02 19:55:01 +08:00
networks:
server:
ipv4_address: ${MYSQL_NETWORK_ADDRESS}
2023-08-29 18:03:37 +08:00
mongodb:
image: mongo:6.0.2
ports:
2023-08-30 11:32:12 +08:00
- "${MONGO_PORT}:27017"
2023-08-29 18:03:37 +08:00
container_name: mongo
command: --wiredTigerCacheSizeGB 1 --auth
volumes:
2023-09-02 19:55:01 +08:00
- mongodb_data:/data/db
- mongodb_logs:/data/logs
- mongodb_config:/etc/mongo
2023-08-30 11:32:12 +08:00
- "./scripts/mongo-init.sh:/docker-entrypoint-initdb.d/mongo-init.sh:ro"
2023-08-29 18:03:37 +08:00
environment:
- TZ=Asia/Shanghai
- wiredTigerCacheSizeGB=1
2023-08-30 11:32:12 +08:00
- MONGO_INITDB_ROOT_USERNAME=${MONGO_USERNAME}
- MONGO_INITDB_ROOT_PASSWORD=${MONGO_PASSWORD}
- MONGO_INITDB_DATABASE=${MONGO_DATABASE}
2023-08-29 18:03:37 +08:00
restart: always
2023-09-02 19:55:01 +08:00
networks:
server:
ipv4_address: ${MONGO_NETWORK_ADDRESS}
2023-08-29 18:03:37 +08:00
redis:
image: redis:7.0.0
2023-09-02 19:55:01 +08:00
container_name: redis
2023-08-29 18:03:37 +08:00
ports:
2023-08-30 11:32:12 +08:00
- "${REDIS_PORT}:6379"
2023-08-29 18:03:37 +08:00
volumes:
2023-09-02 19:55:01 +08:00
- redis_data:/data
- redis_config:/usr/local/redis/config/redis.conf
2023-08-29 18:03:37 +08:00
environment:
TZ: Asia/Shanghai
restart: always
sysctls:
net.core.somaxconn: 1024
2023-08-30 11:32:12 +08:00
command: redis-server --requirepass ${REDIS_PASSWORD} --appendonly yes
2023-09-02 19:55:01 +08:00
networks:
server:
ipv4_address: ${REDIS_NETWORK_ADDRESS}
2023-08-29 18:03:37 +08:00
zookeeper:
2023-09-02 19:55:01 +08:00
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}
2023-08-29 18:03:37 +08:00
kafka:
2023-09-02 19:55:01 +08:00
image: 'bitnami/kafka:latest'
2023-08-29 18:03:37 +08:00
container_name: kafka
2023-09-02 19:55:01 +08:00
user: root
2023-08-29 18:03:37 +08:00
restart: always
ports:
2023-09-02 19:55:01 +08:00
- "${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
"
2023-08-29 18:03:37 +08:00
environment:
2023-09-02 19:55:01 +08:00
- 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}
2023-08-29 18:03:37 +08:00
minio:
image: minio/minio
ports:
2023-08-30 11:32:12 +08:00
- "${MINIO_PORT}:9000"
- "9090:9090"
2023-08-29 18:03:37 +08:00
container_name: minio
volumes:
2023-09-02 19:55:01 +08:00
- minio_data:/data
- minio_config:/root/.minio
2023-08-29 18:03:37 +08:00
environment:
2023-08-30 11:32:12 +08:00
MINIO_ROOT_USER: "${MINIO_ACCESS_KEY}"
MINIO_ROOT_PASSWORD: "${MINIO_SECRET_KEY}"
2023-08-29 18:03:37 +08:00
restart: always
command: minio server /data --console-address ':9090'
2023-09-02 19:55:01 +08:00
networks:
server:
ipv4_address: ${MINIO_NETWORK_ADDRESS}
2023-08-29 18:03:37 +08:00
2023-09-02 19:55:01 +08:00
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}
2023-08-30 16:21:39 +08:00
2023-08-29 18:03:37 +08:00
openim-server:
2023-09-01 11:24:37 +08:00
# image: ghcr.io/openimsdk/openim-server:main
image: registry.cn-hangzhou.aliyuncs.com/openimsdk/openim-server:main
2023-08-29 18:03:37 +08:00
# image: openim/openim-server:main
2023-09-02 19:55:01 +08:00
# build: .
2023-08-29 18:03:37 +08:00
container_name: openim-server
2023-09-02 19:55:01 +08:00
ports:
- ${OPENIM_WS_PORT}:10001
- ${API_OPENIM_PORT}:10002
2023-08-29 18:03:37 +08:00
healthcheck:
2023-09-02 19:55:01 +08:00
test: ["CMD", "/openim/openim-server/scripts/check-all.sh"]
interval: 300s
2023-08-29 18:03:37 +08:00
timeout: 10s
retries: 5
volumes:
2023-09-02 20:40:11 +08:00
- ./logs:/openim/openim-server/logs
- ./_output:/openim/openim-server/_output
- ./config:/openim/openim-server/config
- ./scripts:/openim/openim-server/scripts
2023-08-29 18:03:37 +08:00
restart: always
depends_on:
- kafka
- mysql
- mongodb
- redis
- minio
logging:
driver: json-file
options:
max-size: "1g"
max-file: "2"
2023-09-02 19:55:01 +08:00
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}
2023-08-29 18:03:37 +08:00
prometheus:
image: prom/prometheus
volumes:
2023-09-02 19:55:01 +08:00
- openim_server_prometheus_config:/etc/prometheus
2023-08-29 18:03:37 +08:00
container_name: prometheus
2023-09-02 19:55:01 +08:00
ports:
- ${PROMETHEUS_PORT}:9091
command: --web.listen-address=:9091 --config.file="/etc/prometheus"
networks:
server:
ipv4_address: ${PROMETHEUS_NETWORK_ADDRESS}
2023-08-29 18:03:37 +08:00
grafana:
image: grafana/grafana
volumes:
2023-09-02 19:55:01 +08:00
- openim_server_grafana_datasource:/etc/grafana/provisioning/datasources
- openim_server_grafana_config:/etc/grafana
- openim_server_grafana_dashboard:/var/lib/grafana/dashboards
2023-08-29 18:03:37 +08:00
container_name: grafana
2023-09-02 19:55:01 +08:00
ports:
- ${GRAFANA_PORT}:3000
networks:
server:
ipv4_address: ${GRAFANA_NETWORK_ADDRESS}
2023-08-29 18:03:37 +08:00
# node-exporter:
# image: quay.io/prometheus/node-exporter
# container_name: node-exporter
# restart: always
# ports:
2023-09-02 19:55:01 +08:00
# - "9100:9100"