feat(ci): Remove the dependency on the setup Docker image. (#352)
This commit is contained in:
@@ -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:
|
||||
|
||||
20
docker/volumes/minio/initialize.sh
Normal file
20
docker/volumes/minio/initialize.sh
Normal file
@@ -0,0 +1,20 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Run initialization in background
|
||||
(
|
||||
# Wait for MinIO to be ready
|
||||
until (/usr/bin/mc alias set localminio http://localhost:9000 ${MINIO_ROOT_USER} ${MINIO_ROOT_PASSWORD}) do
|
||||
echo "Waiting for MinIO to be ready..."
|
||||
sleep 1
|
||||
done
|
||||
|
||||
# Create bucket and copy files
|
||||
/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 "MinIO initialization complete."
|
||||
) &
|
||||
|
||||
# Start minio server in foreground
|
||||
exec minio server /data --console-address ":9001"
|
||||
1500
docker/volumes/mysql/schema.sql
Normal file → Executable file
1500
docker/volumes/mysql/schema.sql
Normal file → Executable file
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user