Files
docker-registry/kami-gateway/Dockerfile.base
danial 1ecefc80af chore(docker): 优化 Playwright 浏览器安装和配置
- 设置 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
- 保持其他环境变量配置不变
- 解决国内代理访问速度或稳定性问题
2025-12-17 15:33:59 +08:00

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"