- 设置 PLAYWRIGHT_BROWSERS_PATH 环境变量指向 /app/.browsers - 创建 /app/.browsers 目录用于存放浏览器文件 - 分别以 root 用户和 appuser 用户执行 Playwright 依赖和浏览器安装 - 提升 /app/.browsers 目录权限,保证 appuser 访问权限 - 调整安装步骤顺序,优化权限和用户切换流程 docs(kami-gateway): 新增 kami-gateway 模块文档及构建脚本说明 - 添加了 kami-gateway 模块的整体介绍及项目结构概述 - 详细描述了基础镜像构建流程和核心组件(Dockerfile.base 与 build-base-image.sh) - 分析了 Go 依赖管理方式及 Docker 构建优化机制 - 介绍了 CI/CD 集成流程及自动化构建逻辑 - 阐述了性能优化措施,包括中国镜像源配置和极速构建策略 - 提供了常见故障排查指南以提高镜像构建和推送的稳定性 - 补充了安全性设计,如非 root 用户运行和证书管理 chore(docker): 更新 Go 模块代理地址 - 将 GOPROXY 从 https://goproxy.cn 更改为 https://goproxy.io - 保持其他环境变量配置不变 - 解决国内代理访问速度或稳定性问题
59 lines
1.7 KiB
Docker
59 lines
1.7 KiB
Docker
# Base Image for kami-gateway applications
|
|
# Contains Go 1.25 build environment and Alpine runtime
|
|
|
|
FROM golang:1.25-alpine
|
|
|
|
# Set environment variables
|
|
ENV TZ=Asia/Shanghai \
|
|
GO111MODULE=on \
|
|
GOPROXY=https://goproxy.io,direct \
|
|
CGO_ENABLED=0 \
|
|
GOOS=linux \
|
|
GOARCH=amd64
|
|
|
|
# Set up Alpine repositories (use China mirror for faster downloads)
|
|
RUN echo "https://mirrors.aliyun.com/alpine/v3.22/main/" > /etc/apk/repositories && \
|
|
echo "https://mirrors.aliyun.com/alpine/v3.22/community/" >> /etc/apk/repositories
|
|
|
|
# Install all dependencies
|
|
RUN apk update && \
|
|
apk upgrade && \
|
|
apk add --no-cache \
|
|
tzdata \
|
|
curl \
|
|
ca-certificates \
|
|
git && \
|
|
# Set timezone
|
|
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
|
|
echo "Asia/Shanghai" > /etc/timezone && \
|
|
# Clean up
|
|
rm -rf /var/cache/apk/*
|
|
|
|
# Download custom certificates (skip problematic Alpine package, use curl instead)
|
|
RUN curl -fsSL -o /usr/local/share/ca-certificates/aaa-certificate-services.crt https://www.tbs-x509.com/Comodo_AAA_Certificate_Services.crt && \
|
|
update-ca-certificates
|
|
|
|
# Create non-root user
|
|
RUN addgroup -g 1001 -S appuser && \
|
|
adduser -u 1001 -S appuser -G appuser -h /app -s /bin/sh
|
|
|
|
# Create application directory
|
|
RUN mkdir -p /app && \
|
|
chown -R appuser:appuser /app
|
|
|
|
# Switch to appuser
|
|
USER appuser
|
|
|
|
# Set working directory
|
|
WORKDIR /app
|
|
|
|
# Copy Go modules files for dependency management
|
|
COPY --chown=appuser:appuser go.mod go.sum* ./
|
|
|
|
# Pre-download Go dependencies for faster builds
|
|
RUN go mod download && go mod verify
|
|
|
|
# Label the image
|
|
LABEL maintainer="kami-gateway-team" \
|
|
version="1.0.0" \
|
|
description="Base image for kami-gateway applications with Go 1.25 and Alpine runtime" |