Files
docker-registry/.qoder/repowiki/zh/content/项目概述/alpine-base 模块.md
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

7.6 KiB
Raw Blame History

alpine-base 模块

**Referenced Files in This Document** - [README.md](file://alpine-base/README.md) - [build-base-image.sh](file://alpine-base/build-base-image.sh) - [Dockerfile.base](file://alpine-base/Dockerfile.base)

目录

  1. 简介
  2. 项目结构
  3. 核心特性
  4. 架构设计
  5. 构建流程
  6. 使用方法
  7. 性能与安全
  8. 结论

简介

alpine-base 模块是一个优化的 Alpine Linux 基础镜像,专为各种容器化应用设计。该镜像基于 alpine:latest,通过配置中国镜像源、设置时区、创建非 root 用户和集成自定义证书等优化措施,提供了一个轻量、安全、网络优化的 Linux 运行时环境。预装的常用工具集(如 curl、wget、git、bash 等)显著提升了开发效率。该模块在微服务架构中扮演着基础支撑角色,为上层镜像提供一致且可靠的运行环境。

Section sources

项目结构

alpine-base 模块包含以下核心文件:

  • Dockerfile.base:定义基础镜像的 Dockerfile
  • build-base-image.sh:用于构建和推送镜像的脚本
  • README.md:模块的说明文档

这些文件共同构成了一个完整的镜像构建和管理解决方案,确保了镜像的一致性和可重复性。

graph TD
A[Dockerfile.base] --> B[基础镜像定义]
C[build-base-image.sh] --> D[构建与推送]
E[README.md] --> F[使用说明]
B --> G[alpine-base:latest]
D --> G
F --> G

Diagram sources

Section sources

核心特性

alpine-base 镜像具备以下核心特性:

基础环境

  • 基础镜像:基于最新的 alpine:latest,确保系统安全性和稳定性
  • 镜像源:配置阿里云中国镜像源,显著加速软件包下载速度
  • 时区:设置为 Asia/Shanghai,符合中国用户的时区需求

预装工具

  • 网络工具:预装 curlwgetgit,方便网络操作和代码管理
  • 系统工具:包含 bashtargzip,提供基本的系统操作能力
  • 证书管理:集成 ca-certificates 和自定义证书,确保安全通信
  • 包管理:预装 apk-tools,便于后续软件包管理

用户配置

  • 非 root 用户:创建 appuser 用户UID 1001以非 root 权限运行应用,提升安全性
  • 应用目录:创建 /app 目录并设置正确的文件权限
  • 安全权限:所有文件和目录均设置为安全的权限配置

Section sources

架构设计

alpine-base 的架构设计体现了分层继承和优化配置的理念。

分层继承机制

镜像基于 alpine:latest 进行构建,通过 Docker 的分层机制,每一层都添加特定的配置和工具。这种设计使得镜像构建过程清晰且可维护。

中国镜像源配置

通过修改 /etc/apk/repositories 文件,将 Alpine 的软件源替换为阿里云镜像源。这不仅加快了软件包的下载速度,还提高了构建的稳定性。

时区设置

通过设置 TZ 环境变量和复制时区文件,将系统时区设置为 Asia/Shanghai。这确保了容器内的时间与本地时间一致。

非 root 用户创建

使用 addgroupadduser 命令创建 appuser 用户,并将其主目录设置为 /app。通过 USER 指令切换到该用户,确保应用以非 root 权限运行。

自定义证书集成

通过 curl 下载自定义证书并使用 update-ca-certificates 命令更新证书库,确保容器能够信任特定的证书颁发机构。

classDiagram
class AlpineBase {
+string base_image : alpine : latest
+string timezone : Asia/Shanghai
+string registry : git.oceanpay.cc/danial
+string user : appuser (UID : 1001)
+string workdir : /app
+list tools : [curl, wget, git, bash, ...]
+list certificates : [ca-certificates, custom.crt]
+build() : void
+push() : void
}
AlpineBase : --|> alpine : latest : inherits
AlpineBase : uses "阿里云镜像源" : configures
AlpineBase : creates "appuser" : user management
AlpineBase : installs "预装工具" : package management
AlpineBase : integrates "自定义证书" : security

Diagram sources

Section sources

构建流程

alpine-base 的构建流程由 build-base-image.sh 脚本自动化完成。

构建脚本逻辑

  1. 配置参数:设置镜像名称、注册表和版本号
  2. 构建镜像:使用 docker build 命令基于 Dockerfile.base 构建镜像
  3. 标记镜像:为本地和远程注册表创建相应的标签
  4. 推送镜像:如果指定了远程注册表,则推送镜像
  5. 显示信息:输出构建完成的信息和镜像大小

环境变量

  • DOCKER_REGISTRY:指定镜像推送的目标注册表,默认为 git.oceanpay.cc/danial
  • VERSION:指定镜像版本,默认为 latest
flowchart TD
A[开始构建] --> B[读取环境变量]
B --> C{是否指定注册表?}
C --> |是| D[设置REGISTRY]
C --> |否| E[使用默认值]
D --> F[构建镜像]
E --> F
F --> G[标记本地镜像]
G --> H{是否远程注册表?}
H --> |是| I[标记远程镜像]
H --> |否| J[跳过]
I --> K[推送镜像]
J --> L[完成]
K --> L
L --> M[显示镜像信息]

Diagram sources

Section sources

使用方法

本地构建与推送

# 构建基础镜像
./build-base-image.sh

# 推送到镜像仓库
DOCKER_REGISTRY=git.oceanpay.cc/danial ./build-base-image.sh

在应用 Dockerfile 中使用

# 使用基础镜像
FROM git.oceanpay.cc/danial/alpine-base:latest

# 复制应用代码
COPY --chown=appuser:appuser . /app/

# 切换到非 root 用户
USER appuser

# 运行应用
CMD ["./your-app"]

Section sources

性能与安全

性能优化

  • 镜像缓存:利用 Docker 的层缓存机制,避免重复下载和安装
  • 精简安装:使用 --no-cache 选项,减少镜像体积
  • 并行构建:在 CI/CD 中并行构建多个镜像

安全加固

  • 非 root 运行:应用以 appuser 用户身份运行,降低安全风险
  • 最小权限:只安装必要的工具和包
  • 定期更新:定期更新基础镜像和软件包

CI/CD 集成

  • 自动化构建:在 CI/CD 流水线中自动构建和推送镜像
  • 版本管理:使用语义化版本号管理镜像版本
  • 镜像扫描:集成安全扫描工具,检测漏洞

Section sources

结论

alpine-base 模块通过精心设计的架构和优化配置,为上层镜像提供了一个轻量、安全、高效的 Linux 运行时环境。其预装的工具集和中国镜像源配置显著提升了开发效率和构建速度。通过非 root 用户运行和自定义证书集成,确保了应用的安全性。该模块在微服务架构中扮演着基础支撑角色,为构建稳定可靠的容器化应用提供了坚实的基础。