@ -5,6 +5,7 @@ services:
mysql:
image : mysql:8.4.5
container_name : coze-mysql
restart : always
environment:
MYSQL_ROOT_PASSWORD : ${MYSQL_ROOT_PASSWORD:-root}
MYSQL_DATABASE : ${MYSQL_DATABASE:-opencoze}
@ -16,6 +17,7 @@ services:
- '3306:3306'
volumes:
- ./data/mysql:/var/lib/mysql
- ./volumes/mysql/schema.sql:/docker-entrypoint-initdb.d/init.sql
command:
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_unicode_ci
@ -40,6 +42,7 @@ services:
redis:
image : bitnami/redis:8.0
container_name : coze-redis
restart : always
user : root
privileged : true
profiles : [ 'middleware' ]
@ -62,13 +65,6 @@ services:
exec /opt/bitnami/scripts/redis/entrypoint.sh /opt/bitnami/scripts/redis/run.sh
"
depends_on:
minio-setup:
condition : service_completed_successfully
mysql-setup-schema:
condition : service_completed_successfully
mysql-setup-init-sql:
condition : service_completed_successfully
healthcheck:
test : [ 'CMD' , 'redis-cli' , 'ping' ]
interval : 5s
@ -77,113 +73,10 @@ services:
start_period : 10s
networks:
- coze-network
# rocketmq-namesrv:
# image: apache/rocketmq:5.3.2
# container_name: coze-rocketmq-namesrv
# privileged: true
# user: root
# profiles: ['middleware']
# env_file: *env_file
# ports:
# - '9876:9876'
# volumes:
# - ./data/rocketmq/namesrv/logs:/home/rocketmq/logs:rw,Z
# - ./data/rocketmq/namesrv/store:/home/rocketmq/store:rw,Z
# environment:
# - ALLOW_ANONYMOUS_LOGIN=yes
# command: >
# bash -c "
# # Set proper permissions for data directories
# mkdir -p /home/rocketmq/logs /home/rocketmq/store
# mkdir -p /home/rocketmq/logs/rocketmqlogs
# touch /home/rocketmq/logs/rocketmqlogs/tools.log
# touch /home/rocketmq/logs/rocketmqlogs/tools_default.log
# chown -R rocketmq:rocketmq /home/rocketmq/logs /home/rocketmq/store
# chmod g+s /home/rocketmq/logs /home/rocketmq/store
# echo 'Starting RocketMQ NameServer...'
# sh mqnamesrv
# "
# healthcheck:
# test: ['CMD', 'sh', 'mqadmin', 'clusterList', '-n', 'localhost:9876']
# interval: 5s
# timeout: 10s
# retries: 10
# start_period: 10s
# networks:
# - coze-network
# rocketmq-broker:
# image: apache/rocketmq:5.3.2
# container_name: coze-rocketmq-broker
# privileged: true
# user: root
# profiles: ['middleware']
# env_file: *env_file
# ports:
# - '10909:10909'
# - '10911:10911'
# - '10912:10912'
# volumes:
# - ./data/rocketmq/broker/logs:/home/rocketmq/logs:rw,Z
# - ./data/rocketmq/broker/store:/home/rocketmq/store:rw,Z
# - ./volumes/rocketmq/broker.conf:/home/rocketmq/conf/broker.conf:rw,Z
# networks:
# - coze-network
# command: >
# bash -c '
# # Set proper permissions
# mkdir -p /home/rocketmq/logs/rocketmqlogs /home/rocketmq/store
# touch /home/rocketmq/logs/rocketmqlogs/tools.log \
# /home/rocketmq/logs/rocketmqlogs/tools_default.log
# chown -R rocketmq:rocketmq /home/rocketmq/logs /home/rocketmq/store
# chmod g+s /home/rocketmq/logs /home/rocketmq/store
# echo "Starting RocketMQ Broker..."
# sh mqbroker -n rocketmq-namesrv:9876 -c /home/rocketmq/conf/broker.conf &
# echo "Waiting for Broker registration..."
# broker_ready=false
# for i in {1..60}; do
# if sh mqadmin clusterList -n rocketmq-namesrv:9876 \
# | grep -q "DefaultCluster.*broker-a"; then
# echo "Registered."
# broker_ready=true
# break
# fi
# echo "Not ready, retry $$i/60..."
# sleep 1
# done
# if [ "$$broker_ready" = false ]; then
# echo "ERROR: registration timed out."
# exit 1
# fi
# echo "Creating topics..."
# for t in opencoze_knowledge opencoze_search_app opencoze_search_resource \
# %RETRY%cg_knowledge %RETRY%cg_search_app %RETRY%cg_search_resource; do
# sh mqadmin updateTopic -n rocketmq-namesrv:9876 \
# -c DefaultCluster -t "$$t"
# done
# touch /tmp/rocketmq_ready
# echo "Broker started successfully."
# wait
# '
# depends_on:
# - rocketmq-namesrv
# healthcheck:
# test: ['CMD-SHELL', '[ -f /tmp/rocketmq_ready ]']
# interval: 10s
# timeout: 10s
# retries: 10
# start_period: 10s
elasticsearch:
image : bitnami/elasticsearch:8.18.0
container_name : coze-elasticsearch
restart : always
user : root
privileged : true
profiles : [ 'middleware' ]
@ -253,6 +146,7 @@ services:
container_name : coze-minio
user : root
privileged : true
restart : always
profiles : [ 'middleware' ]
env_file : *env_file
ports:
@ -260,11 +154,14 @@ services:
- '9001:9001'
volumes:
- ./data/minio:/data
- ./volumes/minio/default_icon/:/default_icon
- ./volumes/minio/official_plugin_icon/:/official_plugin_icon
- ./volumes/minio/initialize.sh:/initialize.sh
environment:
MINIO_ROOT_USER : ${MINIO_ROOT_USER:-minioadmin}
MINIO_ROOT_PASSWORD : ${MINIO_ROOT_PASSWORD:-minioadmin123}
MINIO_DEFAULT_BUCKETS : ${MINIO_BUCKET:-opencoze},${MINIO_DEFAULT_BUCKETS:-milvus}
command : server /data --console-address ":9001"
entrypoint : [ '/bin/sh' , '/initialize.sh' ]
healthcheck:
test:
[
@ -282,6 +179,7 @@ services:
image : bitnami/etcd:3.5
container_name : coze-etcd
user : root
restart : always
privileged : true
profiles : [ 'middleware' ]
env_file : *env_file
@ -319,6 +217,7 @@ services:
image : milvusdb/milvus:v2.5.10
user : root
privileged : true
restart : always
profiles : [ 'middleware' ]
env_file : *env_file
command : >
@ -361,6 +260,7 @@ services:
image : nsqio/nsq:v1.2.1
container_name : coze-nsqlookupd
command : /nsqlookupd
restart : always
profiles : [ 'middleware' ]
ports:
- '4160:4160'
@ -379,6 +279,7 @@ services:
container_name : coze-nsqd
command : /nsqd --lookupd-tcp-address=coze-nsqlookupd:4160 --broadcast-address=coze-nsqd
profiles : [ 'middleware' ]
restart : always
ports:
- '4150:4150'
- '4151:4151'
@ -399,6 +300,7 @@ services:
container_name : coze-nsqadmin
command : /nsqadmin --lookupd-http-address=coze-nsqlookupd:4161
profiles : [ 'middleware' ]
restart : always
ports:
- '4171:4171'
depends_on:
@ -407,107 +309,12 @@ services:
networks:
- coze-network
minio-setup:
image : minio/mc:RELEASE.2025-05-21T01-59-54Z-cpuv1
container_name : coze-minio-setup
profiles : [ 'middleware' ]
env_file : *env_file
depends_on:
minio:
condition : service_healthy
volumes:
- ./volumes/minio/default_icon/:/default_icon
- ./volumes/minio/official_plugin_icon/:/official_plugin_icon
entrypoint : >
/bin/sh -c "
(/usr/bin/mc alias set localminio http://coze-minio:9000 ${MINIO_ROOT_USER} ${MINIO_ROOT_PASSWORD} && \
/usr/bin/mc mb --ignore-existing localminio/${STORAGE_BUCKET} && \
/usr/bin/mc cp --recursive /default_icon/ localminio/${STORAGE_BUCKET}/default_icon/ && \
/usr/bin/mc cp --recursive /official_plugin_icon/ localminio/${STORAGE_BUCKET}/official_plugin_icon/ && \
echo 'upload files to minio complete : Files uploaded to ${STORAGE_BUCKET} bucket.') || exit 1; \
"
networks:
- coze-network
restart : 'no'
mysql-setup-schema:
image : arigaio/atlas:0.35.0-community-alpine
container_name : coze-mysql-setup-schema
profiles : [ 'middleware' , 'mysql-setup' , 'run-server' ]
env_file : *env_file
depends_on:
mysql:
condition : service_healthy
volumes:
- ./atlas/opencoze_latest_schema.hcl:/opencoze_latest_schema.hcl
entrypoint:
- /bin/sh
- -c
- |
set -ex
TMP_ATLAS_URL="${ATLAS_URL}"
if [ "${MYSQL_HOST}" = "localhost" ] || [ "${MYSQL_HOST}" = "127.0.0.1" ]; then
echo "MYSQL_HOST is localhost or 127.0.0.1, replacing with docker network address"
TMP_ATLAS_URL="mysql://${MYSQL_USER}:${MYSQL_PASSWORD}@mysql:${MYSQL_PORT}/${MYSQL_DATABASE}?charset=utf8mb4&parseTime=True"
fi
echo "final atlas url: $${TMP_ATLAS_URL}"
for i in `seq 1 60`; do
if atlas schema apply \
-u "$${TMP_ATLAS_URL}" \
--to file:///opencoze_latest_schema.hcl \
--exclude "atlas_schema_revisions,table_*" \
--auto-approve; then
echo "MySQL setup complete."
exit 0
fi
echo "atlas schema apply failed, retrying...($$i/60)"
sleep 1
done
echo "MySQL setup failed after 60 retries."
exit 1
networks:
- coze-network
mysql-setup-init-sql:
image : mysql:8.4.5
container_name : coze-mysql-setup-init-sql
profiles : [ 'middleware' , 'mysql-setup' , 'run-server' , 'volcano-setup' ]
env_file : *env_file
depends_on:
mysql:
condition : service_healthy
command:
- /bin/sh
- -c
- |
set -ex
for i in $$(seq 1 60); do
DB_HOST="$${MYSQL_HOST}"
if [ "$${MYSQL_HOST}" = "localhost" ] || [ "$${MYSQL_HOST}" = "127.0.0.1" ]; then
DB_HOST="mysql"
fi
if mysql -h "$${DB_HOST}" -P"$${MYSQL_PORT}" -u"$${MYSQL_USER}" -p"$${MYSQL_PASSWORD}" "$${MYSQL_DATABASE}" < /schema.sql && \
mysql -h "$${DB_HOST}" -P"$${MYSQL_PORT}" -u"$${MYSQL_USER}" -p"$${MYSQL_PASSWORD}" "$${MYSQL_DATABASE}" < /sql_init.sql; then
echo 'MySQL init success.'
exit 0
fi
echo "Retrying to connect to mysql... ($$i/60)"
sleep 1
done
echo 'Failed to init mysql db.'
exit 1
volumes:
- ./volumes/mysql/sql_init.sql:/sql_init.sql
- ./volumes/mysql/schema.sql:/schema.sql
networks:
- coze-network
restart : 'no'
coze-server:
# build:
# context: ../
# dockerfile: backend/Dockerfile
image : opencoze/opencoze:latest
restart : always
container_name : coze-server
profiles : [ 'run-server' ]
env_file : *env_file
@ -527,20 +334,12 @@ services:
condition : service_healthy
redis:
condition : service_healthy
# rocketmq-namesrv:
# condition: service_healthy
# rocketmq-broker:
# condition: service_healthy
elasticsearch:
condition : service_healthy
minio:
condition : service_healthy
milvus:
condition : service_healthy
minio-setup:
condition : service_completed_successfully
mysql-setup-init-sql:
condition : service_completed_successfully
command : [ '/app/bootstrap.sh' ]
networks: