Skip to content

Feature: add Docker support - #116

Merged
VLSMB merged 6 commits into
MaloneTalk:mainfrom
FjHe:docker_support
Sep 3, 2026
Merged

Feature: add Docker support#116
VLSMB merged 6 commits into
MaloneTalk:mainfrom
FjHe:docker_support

Conversation

@FjHe

@FjHe FjHe commented Aug 13, 2026

Copy link
Copy Markdown
Contributor

#63

  1. Docker 配置文件(docker/ 目录)
  • docker-compose.yml - 定义了三个服务的编排配置:
    • MySQL 数据库服务(包含健康检查、字符集配置)
    • 后端服务(Spring Boot 应用)
    • 前端服务(Vue + Nginx)
  1. 文档里添加了docker启动说明
    docs/getting-started.md

已测试过:

docker-compose down -v
[+] Running 5/5
 ✔ Container data-agent-frontend  Removed                                                                                                                                                                                      0.0s 
 ✔ Container data-agent-backend   Removed                                                                                                                                                                                      0.6s 
 ✔ Container data-agent-mysql     Removed                                                                                                                                                                                      1.5s 
 ✔ Volume data-agent-mysql        Removed                                                                                                                                                                                      0.0s 
 ✔ Network data-agent-network     Removed                                                                                                                                                                                      0.3s 
(base) PS D:\HKYProject\DataAgent-MaloneTalk\docker> docker-compose up -d --build
[+] Building 1.7s (35/35) FINISHED
 => [internal] load local bake definitions                                                                                                                                                                                     0.0s 
 => => reading from stdin 1.01kB                                                                                                                                                                                               0.0s
 => [backend internal] load build definition from Dockerfile                                                                                                                                                                   0.0s
 => => transferring dockerfile: 975B                                                                                                                                                                                           0.0s 
 => [frontend internal] load build definition from Dockerfile                                                                                                                                                                  0.0s 
 => => transferring dockerfile: 803B                                                                                                                                                                                           0.0s 
 => [frontend internal] load metadata for docker.io/library/node:20-alpine                                                                                                                                                     0.2s 
 => [frontend internal] load metadata for docker.io/library/nginx:alpine                                                                                                                                                       0.2s 
 => [backend internal] load metadata for docker.io/library/eclipse-temurin:17-jre-alpine                                                                                                                                       0.2s 
 => [backend internal] load metadata for docker.io/library/maven:3.9-eclipse-temurin-17                                                                                                                                        0.2s 
 => [backend internal] load .dockerignore                                                                                                                                                                                      0.0s
 => => transferring context: 709B                                                                                                                                                                                              0.0s 
 => [backend internal] load build context                                                                                                                                                                                      0.0s 
 => => transferring context: 27.19kB                                                                                                                                                                                           0.0s 
 => [backend builder 1/6] FROM docker.io/library/maven:3.9-eclipse-temurin-17@sha256:4015718012bbf1113ec6cfae2b950be328d90265ceb60f92b26c3ea7c4d14ee8                                                                          0.0s 
 => => resolve docker.io/library/maven:3.9-eclipse-temurin-17@sha256:4015718012bbf1113ec6cfae2b950be328d90265ceb60f92b26c3ea7c4d14ee8                                                                                          0.0s 
 => [backend stage-1 1/6] FROM docker.io/library/eclipse-temurin:17-jre-alpine@sha256:02320dd4ce20e243dfb915c686089cf9315c763084fafbb12d5c9993aee18b57                                                                         0.0s 
 => => resolve docker.io/library/eclipse-temurin:17-jre-alpine@sha256:02320dd4ce20e243dfb915c686089cf9315c763084fafbb12d5c9993aee18b57                                                                                         0.0s 
 => [frontend builder 1/6] FROM docker.io/library/node:20-alpine@sha256:fb4cd12c85ee03686f6af5362a0b0d56d50c58a04632e6c0fb8363f609372293                                                                                       0.0s 
 => => resolve docker.io/library/node:20-alpine@sha256:fb4cd12c85ee03686f6af5362a0b0d56d50c58a04632e6c0fb8363f609372293                                                                                                        0.0s 
 => [frontend stage-1 1/3] FROM docker.io/library/nginx:alpine@sha256:4a73073bd557c65b759505da037898b61f1be6cbcc3c2c3aeac22d2a470c1752                                                                                         0.0s 
 => => resolve docker.io/library/nginx:alpine@sha256:4a73073bd557c65b759505da037898b61f1be6cbcc3c2c3aeac22d2a470c1752                                                                                                          0.0s
 => [frontend internal] load build context                                                                                                                                                                                     0.9s 
 => => transferring context: 1.81MB                                                                                                                                                                                            0.8s 
 => CACHED [backend stage-1 2/6] WORKDIR /app                                                                                                                                                                                  0.0s 
 => CACHED [backend stage-1 3/6] RUN mkdir -p /app/skills                                                                                                                                                                      0.0s 
 => CACHED [backend stage-1 4/6] RUN addgroup -g 1001 appgroup &&     adduser -u 1001 -G appgroup -D appuser                                                                                                                   0.0s 
 => CACHED [backend builder 2/6] WORKDIR /app                                                                                                                                                                                  0.0s 
 => CACHED [backend builder 3/6] COPY data-agent-backend/pom.xml .                                                                                                                                                             0.0s 
 => CACHED [backend builder 4/6] RUN mvn dependency:go-offline -B                                                                                                                                                              0.0s 
 => CACHED [backend builder 5/6] COPY data-agent-backend/src ./src                                                                                                                                                             0.0s 
 => CACHED [backend builder 6/6] RUN mvn clean package -DskipTests -B                                                                                                                                                          0.0s 
 => CACHED [backend stage-1 5/6] COPY --from=builder /app/target/*.jar app.jar                                                                                                                                                 0.0s 
 => CACHED [backend stage-1 6/6] RUN mkdir -p /app/logs && chown -R appuser:appgroup /app                                                                                                                                      0.0s 
 => [backend] exporting to image                                                                                                                                                                                               0.2s 
 => => exporting layers                                                                                                                                                                                                        0.0s 
 => => exporting manifest sha256:33053230d8a68830c6ce862dfa476699d0cbd9aeacf8cf86454b542e344a5fac                                                                                                                              0.0s 
 => => exporting config sha256:2d481a7b0924872f9055dde07cff6b189fbeefe53cf557a3312db7fbaf96a038                                                                                                                                0.0s 
 => => exporting attestation manifest sha256:17092eacda3fc54f83628967584bd9f1a8e82363a56426eeda0a9edf6f784dfa                                                                                                                  0.0s 
 => => exporting manifest list sha256:6fe1f2d865a8623199f490068cae569dc56af606b6ce1864e92da20f93ae9ff3                                                                                                                         0.0s 
 => => naming to docker.io/library/docker-backend:latest                                                                                                                                                                       0.0s 
 => => unpacking to docker.io/library/docker-backend:latest                                                                                                                                                                    0.0s 
 => [backend] resolving provenance for metadata file                                                                                                                                                                           0.0s 
 => CACHED [frontend stage-1 2/3] COPY docker/frontend/nginx.conf /etc/nginx/nginx.conf                                                                                                                                        0.0s 
 => CACHED [frontend builder 2/6] WORKDIR /app                                                                                                                                                                                 0.0s 
 => CACHED [frontend builder 4/6] COPY data-agent-frontend/ .                                                                                                                                                                  0.0s 
 => CACHED [frontend builder 5/6] RUN pnpm install --frozen-lockfile                                                                                                                                                           0.0s 
 => CACHED [frontend builder 6/6] RUN pnpm vite build                                                                                                                                                                          0.0s 
 => CACHED [frontend stage-1 3/3] COPY --from=builder /app/dist /usr/share/nginx/html                                                                                                                                          0.0s 
 => [frontend] exporting to image                                                                                                                                                                                              0.1s 
 => => exporting attestation manifest sha256:7e9d1593131321ecfbc2856c4688ca53160c328688e380db7ab00c44b798c504                                                                                                                  0.0s 
 => => exporting manifest list sha256:c7a83c5d9ac6c9e3706361261834bacc94ac4593b508a64edfc211c54de1cabd                                                                                                                         0.0s 
 => => naming to docker.io/library/docker-frontend:latest                                                                                                                                                                      0.0s 
 => => unpacking to docker.io/library/docker-frontend:latest                                                                                                                                                                   0.0s 
 => [frontend] resolving provenance for metadata file                                                                                                                                                                          0.0s 
[+] Running 7/7
 ✔ docker-frontend                Built                                                                                                                                                                                        0.0s 
 ✔ docker-backend                 Built                                                                                                                                                                                        0.0s 
 ✔ Network data-agent-network     Created                                                                                                                                                                                      0.0s 
 ✔ Volume "data-agent-mysql"      Created                                                                                                                                                                                      0.0s 
 ✔ Container data-agent-mysql     Healthy                                                                                                                                                                                     11.0s 
 ✔ Container data-agent-backend   Healthy                                                                                                                                                                                     41.5s 
 ✔ Container data-agent-frontend  Started  

@github-actions

Copy link
Copy Markdown

Thank you for your contribution! We will review your request as soon as possible. Please review the code yourself using ponytail https://github.com/DietrichGebert/ponytail.

@lzq986

lzq986 commented Aug 17, 2026

Copy link
Copy Markdown
Contributor

感谢贡献,稍后我们看下

Comment thread docker/backend/Dockerfile
Comment thread docker/frontend/nginx.conf
@lzq986

lzq986 commented Aug 18, 2026

Copy link
Copy Markdown
Contributor

辛苦打包好镜像后继续测试下,直接访问容器的地址来测试功能是否正常

@FjHe

FjHe commented Aug 19, 2026

Copy link
Copy Markdown
Contributor Author

提交commit修复的内容如下:
1、health check 我还是引入了spring-boot-starter-actuator。
2、修改了流式输出情况下,nginx的几个配置
3、docker fatjar启动的情况下,agentscope-extensions-nacos-skill的依赖则必须引入了,会报缺失。
4、修改了一下描述。


之前验证了一下午感觉都好好的,这次测到这么多问题感觉自己失忆了。。

@VLSMB
VLSMB self-requested a review August 29, 2026 15:49
@VLSMB

VLSMB commented Aug 29, 2026

Copy link
Copy Markdown
Member

首先感谢贡献,我自己测试了一下,发现报了这样的错误(系统是Ubuntu 25.04,docker版本28.3.3,docker compose版本v2.39.1):

#24 [frontend builder 5/6] RUN pnpm install --frozen-lockfile
#24 6.283 ✓ Lockfile passes supply-chain policies (260 entries in 6s)
#24 6.283 Lockfile is up to date, resolution step is skipped
#24 6.438 Packages: +210
#24 6.438 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#24 6.467 Error: ERR_PNPM_PACKAGE_MANAGER_SYMLINK_FAILED
#24 6.467 
#24 6.467   × installing dependencies
#24 6.467   ╰─▶ Failed to symlink "@element-plus/icons-vue" for importer ".": Failed to
#24 6.467       create symlink at "/app/node_modules/@element-plus/icons-vue" to "/app/
#24 6.467       node_modules/.pnpm/@element-plus+icons-
#24 6.467       vue@2.3.2_vue@3.5.34_typescript@5.6.3_/node_modules/@element-plus/icons-
#24 6.467       vue": Cross-device link (os error 18)
#24 6.467 
#24 ERROR: process "/bin/sh -c pnpm install --frozen-lockfile" did not complete successfully: exit code: 1
Dockerfile:13

--------------------

  11 |     

  12 |     # 再安装依赖

  13 | >>> RUN pnpm install --frozen-lockfile

  14 |     

  15 |     # Build the application (跳过类型检查,直接打包)

--------------------

target frontend: failed to solve: process "/bin/sh -c pnpm install --frozen-lockfile" did not complete successfully: exit code: 1

然后修改了一下 node 和 pnpm 的版本,就能work了:

# Stage 1: Build
FROM node:22-alpine AS builder

WORKDIR /app

# 直接安装 pnpm(不使用 corepack;项目 pnpm-workspace.yaml 用了 allowBuilds,需 pnpm 11)
RUN npm install -g pnpm@11.24.0

你看看这样修改在你Windows系统上(我看你的日志有PowerShell,大概率是Windows)这样修改后能否成功运行,如果可以的话就改成这俩版本的把

@FjHe

FjHe commented Sep 2, 2026

Copy link
Copy Markdown
Contributor Author

@VLSMB 不好意思已修改。

犯了三个错误:
1、.dockerignore exclude未在子文件夹生效,导致拉取到新版本的pnpm后冲突
2、不了解pnpm的重建机制,这几天刚好新版本
3、没有每次清除镜像缓存后再构建,导致测试过程遗漏了一些问题。

版本已更新,exclude逻辑已修改。

@VLSMB VLSMB left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

感谢贡献

@VLSMB
VLSMB merged commit cb10064 into MaloneTalk:main Sep 3, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants