35 lines
843 B
Docker
35 lines
843 B
Docker
|
|
# syntax=docker/dockerfile:1
|
||
|
|
|
||
|
|
FROM golang:1.23-alpine AS builder
|
||
|
|
WORKDIR /src
|
||
|
|
|
||
|
|
# Pull modules first for better layer cache.
|
||
|
|
COPY go.mod go.sum ./
|
||
|
|
RUN go mod download
|
||
|
|
|
||
|
|
COPY . .
|
||
|
|
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o /out/laodingbot ./cmd/bot
|
||
|
|
|
||
|
|
FROM alpine:3.20
|
||
|
|
WORKDIR /app
|
||
|
|
|
||
|
|
RUN apk add --no-cache ca-certificates tzdata
|
||
|
|
|
||
|
|
COPY --from=builder /out/laodingbot /app/laodingbot
|
||
|
|
|
||
|
|
# Keep default runtime assets in image; can be overridden by bind mounts.
|
||
|
|
COPY bot_context /app/bot_context
|
||
|
|
COPY skills /app/skills
|
||
|
|
COPY workspace/agent_runtime /app/workspace/agent_runtime
|
||
|
|
|
||
|
|
ENV MESSAGE_CHANNEL=webui
|
||
|
|
ENV WEBUI_LISTEN_ADDR=:8090
|
||
|
|
ENV AGENT_WORKSPACE_DIR=/app/workspace/agent_runtime
|
||
|
|
|
||
|
|
# Host can bind mount these directories for persistent/external runtime data.
|
||
|
|
VOLUME ["/app/workspace/agent_runtime"]
|
||
|
|
|
||
|
|
EXPOSE 8090
|
||
|
|
|
||
|
|
CMD ["/app/laodingbot"]
|