2026-03-04 13:25:48 +08:00

89 lines
2.3 KiB
Docker
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Dockerfile for ARM64 architecture
# This Dockerfile uses Chromium (auto-downloaded by go-rod) instead of Google Chrome
# because Google Chrome does not provide official Linux ARM64 builds.
# ---- build stage ----
FROM golang:1.24 AS builder
WORKDIR /src
# 配置 Go 模块代理为国内源
ENV GOPROXY=https://goproxy.cn,direct
ENV GOSUMDB=sum.golang.google.cn
COPY go.mod go.sum ./
RUN go mod download
COPY . .
# 移除 GOARCH 硬编码,让构建系统根据目标平台自动选择架构
RUN CGO_ENABLED=0 GOOS=linux go build -ldflags="-s -w" -o /out/app .
# ---- run stage ----
FROM ubuntu:22.04
# 设置时区
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
WORKDIR /app
# 1. 先安装必要工具,然后配置阿里云镜像源
RUN apt-get update && apt-get install -y ca-certificates wget gnupg && \
sed -i 's|http://archive.ubuntu.com|https://mirrors.aliyun.com|g' /etc/apt/sources.list && \
sed -i 's|http://security.ubuntu.com|https://mirrors.aliyun.com|g' /etc/apt/sources.list
# 2. 安装 Chromium 运行所需的依赖库
# 注意:不安装 Google Chrome,因为它不支持 ARM64
# go-rod 会在首次运行时自动从 Playwright CDN 下载 ARM64 版本的 Chromium
RUN apt-get update && apt-get install -y --no-install-recommends \
ca-certificates \
fonts-liberation \
libasound2 \
libatk-bridge2.0-0 \
libatk1.0-0 \
libc6 \
libcairo2 \
libcups2 \
libdbus-1-3 \
libexpat1 \
libfontconfig1 \
libgbm1 \
libgcc1 \
libglib2.0-0 \
libgtk-3-0 \
libnspr4 \
libnss3 \
libpango-1.0-0 \
libpangocairo-1.0-0 \
libstdc++6 \
libx11-6 \
libx11-xcb1 \
libxcb1 \
libxcomposite1 \
libxcursor1 \
libxdamage1 \
libxext6 \
libxfixes3 \
libxi6 \
libxrandr2 \
libxrender1 \
libxss1 \
libxtst6 \
lsb-release \
wget \
xdg-utils \
&& rm -rf /var/lib/apt/lists/*
COPY --from=builder /out/app .
# 3. 创建共享目录并设置权限
RUN mkdir -p /app/images && \
chmod 777 /app/images
# 4. 不设置 ROD_BROWSER_BIN 环境变量
# go-rod 会自动检测并下载适合 ARM64 架构的 Chromium 浏览器
# Chromium 下载源:https://playwright.azureedge.net/builds/chromium/
EXPOSE 18060
CMD ["./app"]