{"owner":"iflytek","repo":"astron-rpa","hasDocker":true,"hasCompose":true,"hasDockerfile":false,"composePath":"docker/docker-compose.yml","servicesCount":11,"services":[{"name":"mysql","image":"mysql:8.4.6","restart":"always","command":"bash -c \"\ncp /etc/mysql/conf.d/my.cnf /etc/mysql/conf.d/my1.cnf &&\n\n(\n  echo 'Wait for MySQL to start...';\n  until mysqladmin ping -h localhost -u root -p'${DATABASE_PASSWORD}' --silent; do\n    sleep 5;\n  done;\n  \n  echo 'MySQL is up! Running incremental scripts...';\n  \n  for f in /docker-entrypoint-initdb.d/*.sql; do\n    if [[ \\\"\\$$f\\\" != *\\\"01-schema.sql\\\" ]]; then\n      echo \\\"Running \\$$f ...\\\";\n      mysql -u root -p'${DATABASE_PASSWORD}' ${DATABASE_NAME} < \\\"\\$$f\\\";\n    fi\n  done;\n  \n  echo 'All scripts finished.';\n) &\n\ndocker-entrypoint.sh mysqld\n\"\n","environment":["MYSQL_ROOT_PASSWORD=${DATABASE_PASSWORD}","MYSQL_DATABASE=${DATABASE_NAME}"],"volumes":["mysql_data:/var/lib/mysql","./volumes/mysql/my.cnf:/etc/mysql/conf.d/my.cnf:ro","./volumes/mysql/schema.sql:/docker-entrypoint-initdb.d/01-schema.sql","./volumes/mysql/init_app_market_dict_data.sql:/docker-entrypoint-initdb.d/02-init_data.sql","./volumes/mysql/init_his_data_enum_data.sql:/docker-entrypoint-initdb.d/04-init_data.sql","./volumes/mysql/init_sample_template_data.sql:/docker-entrypoint-initdb.d/05-init_data.sql","./volumes/mysql/init_c_atom_meta_new_data.sql:/docker-entrypoint-initdb.d/06-init_data.sql"]},{"name":"atlas","image":"arigaio/atlas:latest","command":"schema apply --url \"${ATLAS_URL}\" --to \"file:///data/atlas/schema.hcl\" --auto-approve","volumes":["./volumes/atlas:/data/atlas"],"depends_on":["mysql"]},{"name":"redis","image":"bitnami/redis:latest","restart":"always","command":"bash -c \"\n  /opt/bitnami/scripts/redis/setup.sh\n  # Set proper permissions for data directories\n  chown -R redis:redis /bitnami/redis/data\n  chmod g+s /bitnami/redis/data\n\n  exec /opt/bitnami/scripts/redis/entrypoint.sh /opt/bitnami/scripts/redis/run.sh\n\"\n","environment":["REDIS_AOF_ENABLED=no","REDIS_PORT_NUMBER=${REDIS_PORT}","REDIS_IO_THREADS=4","ALLOW_EMPTY_PASSWORD=yes"],"volumes":["./data/bitnami/redis:/bitnami/redis/data:rw,Z"]},{"name":"minio","image":"minio/minio:RELEASE.2025-06-13T11-33-47Z-cpuv1","restart":"always","environment":["MINIO_ROOT_USER=${MINIO_AK}","MINIO_ROOT_PASSWORD=${MINIO_SK}","MINIO_DEFAULT_BUCKETS=${MINIO_BUCKET}"],"volumes":["./data/minio:/data"]},{"name":"openresty-nginx","image":"openresty/openresty:1.27.1.1-alpine","restart":"always","ports":["32742:80"],"volumes":["./volumes/nginx/default.conf:/etc/nginx/conf.d/default.conf:ro","./volumes/nginx/lua:/usr/local/openresty/nginx/lua:ro","./logs/nginx:/usr/local/openresty/nginx/logs"],"depends_on":["resource-service","robot-service","ai-service","openapi-service","rpa-auth"]},{"name":"casdoor","image":"casbin/casdoor:v2.67.0","restart":"always","ports":["8000:8000"],"environment":["driverName=mysql","dataSourceName=${DATABASE_USERNAME}:${DATABASE_PASSWORD}@tcp(${DATABASE_HOST}:${DATABASE_PORT})/","CASDOOR_ENABLE_HTTP_WEBHOOK=true"],"volumes":["./volumes/casdoor/init_data_dump.json:/init_data.json"],"depends_on":["mysql"]},{"name":"ai-service","image":"ghcr.io/iflytek/astron-rpa/ai-service:latest","restart":"always","environment":["DATABASE_URL=mysql+aiomysql://${DATABASE_USERNAME}:${DATABASE_PASSWORD}@mysql:3306/${DATABASE_NAME}","REDIS_URL=redis://${REDIS_HOST}:${REDIS_PORT}/${REDIS_DB}","AICHAT_BASE_URL=${AICHAT_BASE_URL}","AICHAT_API_KEY=${AICHAT_API_KEY}"],"volumes":["../backend/ai-service/app:/app/app"],"depends_on":["mysql","redis","casdoor"]},{"name":"openapi-service","image":"ghcr.io/iflytek/astron-rpa/openapi-service:latest","restart":"always","environment":["DATABASE_URL=mysql+aiomysql://${DATABASE_USERNAME}:${DATABASE_PASSWORD}@mysql:3306/${DATABASE_NAME}","REDIS_URL=redis://${REDIS_HOST}:${REDIS_PORT}/${REDIS_DB}","AICHAT_BASE_URL=${AICHAT_BASE_URL}","AICHAT_API_KEY=${AICHAT_API_KEY}"],"volumes":["../backend/openapi-service/app:/app/app"],"depends_on":["mysql","redis","casdoor"]},{"name":"resource-service","image":"ghcr.io/iflytek/astron-rpa/resource-service:latest","restart":"always","volumes":["./logs/resource-service:/app/logs"],"depends_on":["mysql","redis","minio","casdoor"]},{"name":"robot-service","image":"ghcr.io/iflytek/astron-rpa/robot-service:latest","restart":"always","volumes":["./logs/robot-service:/app/logs"],"depends_on":["mysql","redis","casdoor"]},{"name":"rpa-auth","image":"ghcr.io/iflytek/astron-rpa/rpa-auth:latest","restart":"always","volumes":["./logs/rpa-auth:/app/logs"],"depends_on":["mysql","redis","casdoor"]}],"exposedPorts":["32742","8000"],"dockerRunCommand":"docker run -d --name astron-rpa -p 32742:32742 --restart always ghcr.io/iflytek/astron-rpa/ai-service:latest","podmanRunCommand":"podman run -d --name astron-rpa -p 32742:32742 --restart always ghcr.io/iflytek/astron-rpa/ai-service:latest","skopeoInspectCommand":"skopeo inspect docker://ghcr.io/iflytek/astron-rpa/ai-service:latest","orasPullCommand":"oras pull ghcr.io/iflytek/astron-rpa/ai-service:latest","registryMeta":{"provider":"ghcr","image":"ghcr.io/iflytek/astron-rpa/ai-service","canonicalImage":"ghcr.io/iflytek/astron-rpa/ai-service:latest","latestTag":"latest","multiArch":["linux/amd64","linux/arm64"],"lastUpdated":"2026-08-17T17:20:51.115Z","cliCommands":{"dockerRun":"docker run -d --name astron-rpa -p 32742:32742 --restart always ghcr.io/iflytek/astron-rpa/ai-service:latest","dockerPull":"docker pull ghcr.io/iflytek/astron-rpa/ai-service:latest","podmanRun":"podman run -d --name astron-rpa -p 32742:32742 --restart always ghcr.io/iflytek/astron-rpa/ai-service:latest","skopeoInspect":"skopeo inspect docker://ghcr.io/iflytek/astron-rpa/ai-service:latest","orasPull":"oras pull ghcr.io/iflytek/astron-rpa/ai-service:latest","composeYaml":"services:\n  astron-rpa:\n    image: ghcr.io/iflytek/astron-rpa/ai-service:latest\n    restart: unless-stopped\n    ports:\n      - \"32742:32742\""}}}