# syntax=docker/dockerfile:1 # # 运行镜像(不在镜像里编译):只装常用工具,放入**预编译好的 Linux 单二进制**。 # 二进制由 CI 的 binaries job 交叉编译(纯 Go、无 QEMU),按目标架构放在 # 构建上下文的 dist//artex。这样多架构构建时 arm64 只需模拟 apt 层, # 不再模拟 Next/Go 编译,速度快得多。 # # 本地手动构建镜像时,先自行准备二进制: # cd web && npm run build:static && cd .. # cp -r web/out server/webui/dist # CGO_ENABLED=0 GOARCH=amd64 go build -tags embedui -o dist/amd64/artex ./cmd/artex # docker build -t artex:local . FROM python:3.12-slim-bookworm ARG TARGETARCH # 常用工具:ripgrep / curl / vim / npm,加一批 recon 常备件(按需增删) RUN apt-get update && apt-get install -y --no-install-recommends \ ca-certificates ripgrep curl wget vim git jq unzip \ nodejs npm \ dnsutils iputils-ping netcat-openbsd whois nmap \ && rm -rf /var/lib/apt/lists/* WORKDIR /app # 预编译好的对应架构二进制(dist/amd64/artex 或 dist/arm64/artex) COPY dist/${TARGETARCH}/artex /app/artex RUN chmod +x /app/artex COPY skills/ /app/skills/ # data/(SQLite + jwt.key)持久化点 VOLUME ["/app/data"] EXPOSE 8787 8788 ENTRYPOINT ["/app/artex"] CMD ["-addr", ":8787", "-proxy", ":8788"]