From 93c5874840dce969369ab15e9ec125f36fb4e6cc Mon Sep 17 00:00:00 2001 From: SkywalkerSpace Date: Thu, 2 Jul 2026 16:42:20 +0800 Subject: [PATCH 1/5] add automation-worker --- compose/automation-worker-standalone.yml | 38 +++++++++++++++++++ compose/automation-worker.yml | 47 ++++++++++++++++++++++++ 2 files changed, 85 insertions(+) create mode 100644 compose/automation-worker-standalone.yml create mode 100644 compose/automation-worker.yml diff --git a/compose/automation-worker-standalone.yml b/compose/automation-worker-standalone.yml new file mode 100644 index 0000000..9f9aa29 --- /dev/null +++ b/compose/automation-worker-standalone.yml @@ -0,0 +1,38 @@ +services: + automation-worker: + image: ${APP_SERVER_IMAGE:-seatable/automation-worker:7.0.0} + restart: unless-stopped + container_name: automation-worker + ports: + - 8088:8088 + volumes: + - ${SEATABLE_VOLUMES:-/opt/seatable-server}:/shared + environment: + - SEATABLE_LOG_TO_STDOUT=${LOG_TO_STDOUT:-false} + - NON_ROOT==${NON_ROOT:-false} + - TZ=${TIME_ZONE:-UTC} + - JWT_PRIVATE_KEY=${JWT_PRIVATE_KEY:?Variable is not set or empty} + - SEATABLE_MYSQL_DB_HOST=${MARIADB_HOST:-mariadb} + - SEATABLE_MYSQL_DB_PORT=${MARIADB_PORT:-3306} + - SEATABLE_MYSQL_DB_USER=root + - SEATABLE_MYSQL_DB_PASSWORD=${MARIADB_PASSWORD:?Variable is not set or empty} + - SEATABLE_MYSQL_DB_DTABLE_DB_NAME=${SEATABLE_MYSQL_DB_DTABLE_DB_NAME:-dtable_db} + - SEATABLE_MYSQL_DB_SEAFILE_DB_NAME=${SEATABLE_MYSQL_DB_SEAFILE_DB_NAME:-seafile_db} + - SEATABLE_MYSQL_DB_CCNET_DB_NAME=${SEATABLE_MYSQL_DB_CCNET_DB_NAME:-ccnet_db} + - REDIS_HOST=${REDIS_HOST:-redis} + - REDIS_PORT=${REDIS_PORT:-6379} + - REDIS_PASSWORD=${REDIS_PASSWORD:-} + - SEAF_SERVER_STORAGE_TYPE=${SEAF_SERVER_STORAGE_TYPE:-} + - S3_COMMIT_BUCKET=${S3_COMMIT_BUCKET:-} + - S3_FS_BUCKET=${S3_FS_BUCKET:-} + - S3_BLOCK_BUCKET=${S3_BLOCK_BUCKET:-} + - S3_KEY_ID=${S3_KEY_ID:-} + - S3_SECRET_KEY=${S3_SECRET_KEY:-} + - S3_USE_V4_SIGNATURE=${S3_USE_V4_SIGNATURE:-true} + - S3_AWS_REGION=${S3_AWS_REGION:-us-east-1} + - S3_HOST=${S3_HOST:-} + - S3_USE_HTTPS=${S3_USE_HTTPS:-true} + - S3_PATH_STYLE_REQUEST=${S3_PATH_STYLE_REQUEST:-false} + - S3_SSE_C_KEY=${S3_SSE_C_KEY:-} + - SEATABLE_SERVER_HOSTNAME=${SEATABLE_SERVER_HOSTNAME:?Variable is not set or empty} + - SEATABLE_SERVER_PROTOCOL=${SEATABLE_SERVER_PROTOCOL:-https} diff --git a/compose/automation-worker.yml b/compose/automation-worker.yml new file mode 100644 index 0000000..3547ea9 --- /dev/null +++ b/compose/automation-worker.yml @@ -0,0 +1,47 @@ +services: + automation-worker: + image: ${APP_SERVER_IMAGE:-seatable/automation-worker:7.0.0} + restart: unless-stopped + container_name: automation-worker + volumes: + - ${SEATABLE_VOLUMES:-/opt/seatable-server}:/shared + environment: + - SEATABLE_LOG_TO_STDOUT=${LOG_TO_STDOUT:-false} + - NON_ROOT==${NON_ROOT:-false} + - TZ=${TIME_ZONE:-UTC} + - JWT_PRIVATE_KEY=${JWT_PRIVATE_KEY:?Variable is not set or empty} + - SEATABLE_MYSQL_DB_HOST=${MARIADB_HOST:-mariadb} + - SEATABLE_MYSQL_DB_PORT=${MARIADB_PORT:-3306} + - SEATABLE_MYSQL_DB_USER=root + - SEATABLE_MYSQL_DB_PASSWORD=${MARIADB_PASSWORD:?Variable is not set or empty} + - SEATABLE_MYSQL_DB_DTABLE_DB_NAME=${SEATABLE_MYSQL_DB_DTABLE_DB_NAME:-dtable_db} + - SEATABLE_MYSQL_DB_SEAFILE_DB_NAME=${SEATABLE_MYSQL_DB_SEAFILE_DB_NAME:-seafile_db} + - SEATABLE_MYSQL_DB_CCNET_DB_NAME=${SEATABLE_MYSQL_DB_CCNET_DB_NAME:-ccnet_db} + - REDIS_HOST=${REDIS_HOST:-redis} + - REDIS_PORT=${REDIS_PORT:-6379} + - REDIS_PASSWORD=${REDIS_PASSWORD:-} + - SEAF_SERVER_STORAGE_TYPE=${SEAF_SERVER_STORAGE_TYPE:-} + - S3_COMMIT_BUCKET=${S3_COMMIT_BUCKET:-} + - S3_FS_BUCKET=${S3_FS_BUCKET:-} + - S3_BLOCK_BUCKET=${S3_BLOCK_BUCKET:-} + - S3_KEY_ID=${S3_KEY_ID:-} + - S3_SECRET_KEY=${S3_SECRET_KEY:-} + - S3_USE_V4_SIGNATURE=${S3_USE_V4_SIGNATURE:-true} + - S3_AWS_REGION=${S3_AWS_REGION:-us-east-1} + - S3_HOST=${S3_HOST:-} + - S3_USE_HTTPS=${S3_USE_HTTPS:-true} + - S3_PATH_STYLE_REQUEST=${S3_PATH_STYLE_REQUEST:-false} + - S3_SSE_C_KEY=${S3_SSE_C_KEY:-} + - SEATABLE_SERVER_HOSTNAME=${SEATABLE_SERVER_HOSTNAME:?Variable is not set or empty} + - SEATABLE_SERVER_PROTOCOL=${SEATABLE_SERVER_PROTOCOL:-https} + depends_on: + mariadb: + condition: service_healthy + redis: + condition: service_started + networks: + - backend-seatable-net + +networks: + backend-seatable-net: + name: backend-seatable-net From 2816b8846641466ddeca135ba5bbf828efd94e7c Mon Sep 17 00:00:00 2001 From: SkywalkerSpace Date: Thu, 16 Jul 2026 11:02:20 +0800 Subject: [PATCH 2/5] add dtable-server --- compose/seatable-server.yml | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/compose/seatable-server.yml b/compose/seatable-server.yml index 5dc8e64..7eb2037 100644 --- a/compose/seatable-server.yml +++ b/compose/seatable-server.yml @@ -52,6 +52,7 @@ services: - LOG_LEVEL=${LOG_LEVEL:-INFO} - ENABLE_SEATABLE_AI=${ENABLE_SEATABLE_AI:-false} - INNER_SEATABLE_AI_SERVER_URL=${INNER_SEATABLE_AI_SERVER_URL:-http://seatable-ai:8888} + - INNER_DTABLE_SERVER_URL=${INNER_DTABLE_SERVER_URL:-http://dtable-server:5000} labels: caddy_0: ${SEATABLE_SERVER_PROTOCOL:-https}://${SEATABLE_SERVER_HOSTNAME:?Variable is not set or empty} caddy_0.reverse_proxy: "{{upstreams 80}}" @@ -148,6 +149,33 @@ services: # otherwise the container stays unhealthy. # more info at https://admin.seatable.com/upgrade/extra-upgrade-notice/ + dtable-server: + image: ${DTABLE_SERVER_IMAGE:-seatable/dtable-server-js:7.0.0-testing} + restart: unless-stopped + container_name: dtable-server + volumes: + - "/opt/seatable-server:/shared" + environment: + - TIME_ZONE=${TIME_ZONE} + - SEATABLE_MYSQL_DB_HOST=${MARIADB_HOST:-mariadb} + - SEATABLE_MYSQL_DB_PORT=${MARIADB_PORT:-3306} + - SEATABLE_MYSQL_DB_USER=root + - SEATABLE_MYSQL_DB_PASSWORD=${MARIADB_PASSWORD:?Variable is not set or empty} + - SEATABLE_MYSQL_DB_DTABLE_DB_NAME=dtable_db + - REDIS_HOST=${REDIS_HOST:-redis} + - REDIS_PORT=${REDIS_PORT:-6379} + - REDIS_PASSWORD=${REDIS_PASSWORD:?Variable is not set or empty} + - JWT_PRIVATE_KEY=${JWT_PRIVATE_KEY:?Variable is not set or empty} + - INNER_DTABLE_WEB_SERVICE_URL=${INNER_DTABLE_WEB_SERVICE_URL:-http://seatable-server:8000} + - INNER_DTABLE_DB_URL=${INNER_DTABLE_DB_URL:-http://seatable-server:7777} + - INNER_DTABLE_STORAGE_SERVER_URL=${INNER_DTABLE_STORAGE_SERVER_URL:-http://seatable-server:6666} + healthcheck: + test: ["CMD-SHELL", "curl --fail http://localhost:5000 || exit 1"] + interval: 20s + retries: 3 + start_period: 30s + timeout: 10s + redis: image: ${SEATABLE_REDIS_IMAGE:-redis:8.4.0-bookworm} restart: unless-stopped From 2398a657385c28172a6af50af2bd0c7fedd2c55c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=AC=A2=E4=B9=90=E9=A9=AC?= <38058090+SkywalkerSpace@users.noreply.github.com> Date: Thu, 16 Jul 2026 11:04:34 +0800 Subject: [PATCH 3/5] Apply suggestions from code review Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- compose/automation-worker-standalone.yml | 5 +++-- compose/automation-worker.yml | 7 ++++--- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/compose/automation-worker-standalone.yml b/compose/automation-worker-standalone.yml index 9f9aa29..9a9a346 100644 --- a/compose/automation-worker-standalone.yml +++ b/compose/automation-worker-standalone.yml @@ -1,6 +1,7 @@ +--- services: automation-worker: - image: ${APP_SERVER_IMAGE:-seatable/automation-worker:7.0.0} + image: ${AUTOMATION_WORKER_IMAGE:-seatable/automation-worker:7.0.0} restart: unless-stopped container_name: automation-worker ports: @@ -9,7 +10,7 @@ services: - ${SEATABLE_VOLUMES:-/opt/seatable-server}:/shared environment: - SEATABLE_LOG_TO_STDOUT=${LOG_TO_STDOUT:-false} - - NON_ROOT==${NON_ROOT:-false} + - NON_ROOT=${NON_ROOT:-false} - TZ=${TIME_ZONE:-UTC} - JWT_PRIVATE_KEY=${JWT_PRIVATE_KEY:?Variable is not set or empty} - SEATABLE_MYSQL_DB_HOST=${MARIADB_HOST:-mariadb} diff --git a/compose/automation-worker.yml b/compose/automation-worker.yml index 3547ea9..0d1de93 100644 --- a/compose/automation-worker.yml +++ b/compose/automation-worker.yml @@ -1,13 +1,14 @@ +--- services: automation-worker: - image: ${APP_SERVER_IMAGE:-seatable/automation-worker:7.0.0} + image: ${AUTOMATION_WORKER_IMAGE:-seatable/automation-worker:7.0.0} restart: unless-stopped container_name: automation-worker volumes: - ${SEATABLE_VOLUMES:-/opt/seatable-server}:/shared environment: - SEATABLE_LOG_TO_STDOUT=${LOG_TO_STDOUT:-false} - - NON_ROOT==${NON_ROOT:-false} + - NON_ROOT=${NON_ROOT:-false} - TZ=${TIME_ZONE:-UTC} - JWT_PRIVATE_KEY=${JWT_PRIVATE_KEY:?Variable is not set or empty} - SEATABLE_MYSQL_DB_HOST=${MARIADB_HOST:-mariadb} @@ -38,7 +39,7 @@ services: mariadb: condition: service_healthy redis: - condition: service_started + condition: service_healthy networks: - backend-seatable-net From 362ab848efc0c6f2426648c4b522cf8b7ff8adae Mon Sep 17 00:00:00 2001 From: SkywalkerSpace Date: Fri, 17 Jul 2026 14:52:33 +0800 Subject: [PATCH 4/5] update dtable-server caddy --- compose/seatable-server.yml | 66 ++++++++++++++++++++++--------------- 1 file changed, 39 insertions(+), 27 deletions(-) diff --git a/compose/seatable-server.yml b/compose/seatable-server.yml index 7eb2037..b0b3921 100644 --- a/compose/seatable-server.yml +++ b/compose/seatable-server.yml @@ -117,6 +117,45 @@ services: start_period: 30s timeout: 10s + dtable-server: + image: ${DTABLE_SERVER_IMAGE:-seatable/dtable-server-js:7.0.0-testing} + restart: unless-stopped + container_name: dtable-server + volumes: + - "/opt/seatable-server:/shared" + environment: + - TIME_ZONE=${TIME_ZONE} + - SEATABLE_MYSQL_DB_HOST=${MARIADB_HOST:-mariadb} + - SEATABLE_MYSQL_DB_PORT=${MARIADB_PORT:-3306} + - SEATABLE_MYSQL_DB_USER=root + - SEATABLE_MYSQL_DB_PASSWORD=${MARIADB_PASSWORD:?Variable is not set or empty} + - SEATABLE_MYSQL_DB_DTABLE_DB_NAME=dtable_db + - REDIS_HOST=${REDIS_HOST:-redis} + - REDIS_PORT=${REDIS_PORT:-6379} + - REDIS_PASSWORD=${REDIS_PASSWORD:?Variable is not set or empty} + - JWT_PRIVATE_KEY=${JWT_PRIVATE_KEY:?Variable is not set or empty} + - INNER_DTABLE_WEB_SERVICE_URL=${INNER_DTABLE_WEB_SERVICE_URL:-http://seatable-server:8000} + - INNER_DTABLE_DB_URL=${INNER_DTABLE_DB_URL:-http://seatable-server:7777} + - INNER_DTABLE_STORAGE_SERVER_URL=${INNER_DTABLE_STORAGE_SERVER_URL:-http://seatable-server:6666} + labels: + caddy: ${SEATABLE_SERVER_PROTOCOL:-https}://${SEATABLE_SERVER_HOSTNAME} + caddy.handle_path: /dtable-server/* + caddy.handle_path.6_reverse_proxy: "{{upstreams 5000}}" + depends_on: + mariadb: + condition: service_healthy + redis: + condition: service_healthy + networks: + - frontend-net + - backend-seatable-net + healthcheck: + test: ["CMD-SHELL", "curl --fail http://localhost:5000 || exit 1"] + interval: 20s + retries: 3 + start_period: 30s + timeout: 10s + mariadb: image: ${SEATABLE_DB_IMAGE:-mariadb:11.8.5-noble} restart: unless-stopped @@ -149,33 +188,6 @@ services: # otherwise the container stays unhealthy. # more info at https://admin.seatable.com/upgrade/extra-upgrade-notice/ - dtable-server: - image: ${DTABLE_SERVER_IMAGE:-seatable/dtable-server-js:7.0.0-testing} - restart: unless-stopped - container_name: dtable-server - volumes: - - "/opt/seatable-server:/shared" - environment: - - TIME_ZONE=${TIME_ZONE} - - SEATABLE_MYSQL_DB_HOST=${MARIADB_HOST:-mariadb} - - SEATABLE_MYSQL_DB_PORT=${MARIADB_PORT:-3306} - - SEATABLE_MYSQL_DB_USER=root - - SEATABLE_MYSQL_DB_PASSWORD=${MARIADB_PASSWORD:?Variable is not set or empty} - - SEATABLE_MYSQL_DB_DTABLE_DB_NAME=dtable_db - - REDIS_HOST=${REDIS_HOST:-redis} - - REDIS_PORT=${REDIS_PORT:-6379} - - REDIS_PASSWORD=${REDIS_PASSWORD:?Variable is not set or empty} - - JWT_PRIVATE_KEY=${JWT_PRIVATE_KEY:?Variable is not set or empty} - - INNER_DTABLE_WEB_SERVICE_URL=${INNER_DTABLE_WEB_SERVICE_URL:-http://seatable-server:8000} - - INNER_DTABLE_DB_URL=${INNER_DTABLE_DB_URL:-http://seatable-server:7777} - - INNER_DTABLE_STORAGE_SERVER_URL=${INNER_DTABLE_STORAGE_SERVER_URL:-http://seatable-server:6666} - healthcheck: - test: ["CMD-SHELL", "curl --fail http://localhost:5000 || exit 1"] - interval: 20s - retries: 3 - start_period: 30s - timeout: 10s - redis: image: ${SEATABLE_REDIS_IMAGE:-redis:8.4.0-bookworm} restart: unless-stopped From 5ca937afc5817b30d85e06b757b9625d1f02b03f Mon Sep 17 00:00:00 2001 From: SkywalkerSpace Date: Wed, 22 Jul 2026 14:10:44 +0800 Subject: [PATCH 5/5] update dtable-server.yml --- compose/automation-worker-standalone.yml | 3 +++ compose/automation-worker.yml | 3 +++ compose/seatable-server.yml | 9 ++------- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/compose/automation-worker-standalone.yml b/compose/automation-worker-standalone.yml index 9a9a346..ea678d1 100644 --- a/compose/automation-worker-standalone.yml +++ b/compose/automation-worker-standalone.yml @@ -37,3 +37,6 @@ services: - S3_SSE_C_KEY=${S3_SSE_C_KEY:-} - SEATABLE_SERVER_HOSTNAME=${SEATABLE_SERVER_HOSTNAME:?Variable is not set or empty} - SEATABLE_SERVER_PROTOCOL=${SEATABLE_SERVER_PROTOCOL:-https} + - INNER_DTABLE_WEB_SERVICE_URL=${INNER_DTABLE_WEB_SERVICE_URL:?Variable is not set or empty} + - INNER_DTABLE_SERVER_URL=${INNER_DTABLE_SERVER_URL:?Variable is not set or empty} + - INNER_DTABLE_DB_URL=${INNER_DTABLE_DB_URL:?Variable is not set or empty} diff --git a/compose/automation-worker.yml b/compose/automation-worker.yml index 0d1de93..a030eba 100644 --- a/compose/automation-worker.yml +++ b/compose/automation-worker.yml @@ -35,6 +35,9 @@ services: - S3_SSE_C_KEY=${S3_SSE_C_KEY:-} - SEATABLE_SERVER_HOSTNAME=${SEATABLE_SERVER_HOSTNAME:?Variable is not set or empty} - SEATABLE_SERVER_PROTOCOL=${SEATABLE_SERVER_PROTOCOL:-https} + - INNER_DTABLE_WEB_SERVICE_URL=${INNER_DTABLE_WEB_SERVICE_URL:-http://seatable-server:8000} + - INNER_DTABLE_SERVER_URL=${INNER_DTABLE_SERVER_URL:-http://seatable-server:5000} + - INNER_DTABLE_DB_URL=${INNER_DTABLE_DB_URL:-http://seatable-server:7777} depends_on: mariadb: condition: service_healthy diff --git a/compose/seatable-server.yml b/compose/seatable-server.yml index b0b3921..2c36198 100644 --- a/compose/seatable-server.yml +++ b/compose/seatable-server.yml @@ -124,7 +124,7 @@ services: volumes: - "/opt/seatable-server:/shared" environment: - - TIME_ZONE=${TIME_ZONE} + - TZ=${TIME_ZONE} - SEATABLE_MYSQL_DB_HOST=${MARIADB_HOST:-mariadb} - SEATABLE_MYSQL_DB_PORT=${MARIADB_PORT:-3306} - SEATABLE_MYSQL_DB_USER=root @@ -136,11 +136,6 @@ services: - JWT_PRIVATE_KEY=${JWT_PRIVATE_KEY:?Variable is not set or empty} - INNER_DTABLE_WEB_SERVICE_URL=${INNER_DTABLE_WEB_SERVICE_URL:-http://seatable-server:8000} - INNER_DTABLE_DB_URL=${INNER_DTABLE_DB_URL:-http://seatable-server:7777} - - INNER_DTABLE_STORAGE_SERVER_URL=${INNER_DTABLE_STORAGE_SERVER_URL:-http://seatable-server:6666} - labels: - caddy: ${SEATABLE_SERVER_PROTOCOL:-https}://${SEATABLE_SERVER_HOSTNAME} - caddy.handle_path: /dtable-server/* - caddy.handle_path.6_reverse_proxy: "{{upstreams 5000}}" depends_on: mariadb: condition: service_healthy @@ -150,7 +145,7 @@ services: - frontend-net - backend-seatable-net healthcheck: - test: ["CMD-SHELL", "curl --fail http://localhost:5000 || exit 1"] + test: ["CMD-SHELL", "curl --fail http://localhost:5000/ping || exit 1"] interval: 20s retries: 3 start_period: 30s