构建:新增完整容器化部署
This commit is contained in:
37
server/Dockerfile
Normal file
37
server/Dockerfile
Normal file
@@ -0,0 +1,37 @@
|
||||
# syntax=docker/dockerfile:1
|
||||
|
||||
# Maven 构建阶段使用与项目一致的 JDK 21,并利用 BuildKit 缓存减少重复下载依赖的时间。
|
||||
FROM maven:3.9.13-eclipse-temurin-21 AS builder
|
||||
|
||||
WORKDIR /workspace
|
||||
COPY pom.xml ./
|
||||
COPY src ./src
|
||||
# 直接打包只解析项目真正需要的依赖;独立 go-offline 会额外下载大量未参与构建的报告插件。
|
||||
RUN --mount=type=cache,target=/root/.m2 mvn -B -DskipTests package
|
||||
|
||||
# AgentScope DockerSandbox 通过 docker 命令创建 Runtime,直接复用官方镜像中的 CLI 二进制。
|
||||
FROM docker:29-cli AS docker-cli
|
||||
|
||||
FROM eclipse-temurin:21-jre-jammy
|
||||
|
||||
# curl 用于容器健康检查;gosu 用于完成目录和 Docker Socket 权限初始化后降权运行 Java。
|
||||
RUN apt-get update \
|
||||
&& apt-get install -y --no-install-recommends ca-certificates curl gosu \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
COPY --from=docker-cli /usr/local/bin/docker /usr/local/bin/docker
|
||||
|
||||
RUN groupadd --gid 10001 manuagent \
|
||||
&& useradd --uid 10001 --gid 10001 --create-home --shell /bin/bash manuagent \
|
||||
&& mkdir -p /opt/manuagent /srv/manuagent/data \
|
||||
&& chown -R manuagent:manuagent /opt/manuagent /srv/manuagent
|
||||
|
||||
WORKDIR /opt/manuagent
|
||||
COPY --from=builder /workspace/target/*.jar app.jar
|
||||
COPY docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh
|
||||
RUN chmod 0755 /usr/local/bin/docker-entrypoint.sh
|
||||
|
||||
EXPOSE 8080
|
||||
|
||||
ENTRYPOINT ["docker-entrypoint.sh"]
|
||||
CMD ["java", "-XX:MaxRAMPercentage=75.0", "-Djava.security.egd=file:/dev/urandom", "-jar", "/opt/manuagent/app.jar"]
|
||||
Reference in New Issue
Block a user