Files
docker-registry/alpine-base/README.md
danial 1a0a86bfeb chore(ci): 注释所有 drone.yml 中的触发分支配置
- 更改服务器主机地址和端口号
- 注释掉 main、master、develop、production 分支的触发器配置
- 取消自动触发事件的推送限制
- 保持 pipeline 配置完整性但禁用触发条件
- 方便后续手动触发或调整 CI 流程设置

chore(ci): 更新服务器地址和pipeline触发器配置,调整基础镜像代理设置

- 更新spider-base-image和alpine-base-image的服务器地址为38.55.194.49:3422
- 为main、master、develop和production分支的pipeline添加触发器注释,禁用自动执行
- 修改.dron.yml文件,恢复pipeline触发器的配置启用推送事件触发
- 更新kami-gateway和相关模块构建文档,反映最新的服务器地址和CI/CD配置变更
- 注释Dockerfile.base中的GOPROXY环境变量,将中国代理从goproxy.cn替换为goproxy.io
- 移除Alpine Linux阿里云镜像源配置,更新文档中相关代理和构建指引说明
- 增加依赖版本说明,包括新增goquery、stomp、zap等依赖版本精确声明
- 优化故障排查指南,提醒检查新的服务器地址和代理配置影响

chore(ci): 更新Docker注册表地址为新的域名

- 将Spider镜像构建中Docker注册表地址由git.oceanpay.cc改为git.domainpay.top
- 将Gateway镜像构建中Docker注册表地址由git.oceanpay.cc改为git.domainpay.top
- 将Alpine基础镜像构建中Docker注册表地址由git.oceanpay.cc改为git.domainpay.top
- 修改对应的docker login与logout命令以匹配新注册表地址
2025-12-17 15:34:04 +08:00

7.5 KiB
Raw Blame History

Alpine Base Image

优化的 Alpine Linux 基础镜像,专为生产环境容器化应用设计。

📋 目录

📁 文件说明

文件名 描述 用途
Dockerfile.base 基础镜像定义 构建标准化的 Alpine 基础环境
build-base-image.sh 基础镜像构建脚本 自动化构建和推送流程
ca/ 自定义证书目录 存放企业内部 CA 证书
entrypoint.sh 容器入口脚本 标准化容器启动流程

镜像特性

🏗️ 基础环境

  • 基础镜像: 基于 alpine:latest
  • 镜像源: 配置阿里云中国镜像源,提升下载速度
  • 时区配置: 时区设置为 Asia/Shanghai
  • 系统更新: 保持最新安全补丁

🛠️ 预装工具

网络工具

  • curl - HTTP/HTTPS 客户端,支持多种协议
  • wget - 文件下载工具,支持断点续传
  • git - 版本控制系统,支持 SSH 和 HTTPS 协议

系统工具

  • bash - 功能强大的 Shell 环境
  • tar - 文件归档和压缩工具
  • gzip - 文件压缩工具
  • unzip - ZIP 文件解压工具
  • procps - 系统进程管理工具
  • coreutils - 基础系统工具集

安全与证书

  • ca-certificates - 系统 CA 证书包
  • 自定义证书 - 支持挂载企业内部 CA 证书
  • apk-tools - Alpine 包管理器

👤 用户配置

  • 非 root 用户: appuser (UID: 1001, GID: 1001)
  • 应用目录: /app (用户可写)
  • 工作目录: /app
  • 安全权限: 严格的文件权限控制
  • sudo 权限: 无 sudo 权限,增强安全性

🚀 快速开始

构建基础镜像

# 本地构建
./build-base-image.sh

# 构建并推送到私有仓库
DOCKER_REGISTRY=git.oceanpay.cc/danial ./build-base-image.sh

# 构建并指定标签
IMAGE_TAG=v1.0.0 ./build-base-image.sh

在项目中使用

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

# 设置维护者信息
LABEL maintainer="your-email@example.com"
LABEL version="1.0.0"

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

# 安装额外依赖 (可选)
RUN apk add --no-cache nginx && \
    rm -rf /var/cache/apk/*

# 暴露端口
EXPOSE 8080

# 健康检查
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
  CMD curl -f http://localhost:8080/health || exit 1

# 切换到非 root 用户
USER appuser

# 设置工作目录
WORKDIR /app

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

Docker Compose 示例

version: '3.8'

services:
  app:
    image: git.oceanpay.cc/danial/alpine-base:latest
    container_name: my-app
    restart: unless-stopped

    # 环境变量
    environment:
      - NODE_ENV=production
      - PORT=8080

    # 卷挂载
    volumes:
      - ./app:/app:ro
      - ./logs:/app/logs
      - ./certs:/usr/local/share/ca-certificates:ro

    # 端口映射
    ports:
      - "8080:8080"

    # 用户配置
    user: "1001:1001"

    # 健康检查
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8080/health"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 40s

🔧 详细使用指南

自定义证书挂载

# 挂载自定义 CA 证书
docker run -d \
  -v /path/to/ca-certificates:/usr/local/share/ca-certificates:ro \
  git.oceanpay.cc/danial/alpine-base:latest

# 在容器内更新证书
docker exec container-name update-ca-certificates

时区修改

FROM git.oceanpay.cc/danial/alpine-base:latest

# 修改时区
ENV TZ=UTC
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && \
    echo $TZ > /etc/timezone

包管理示例

FROM git.oceanpay.cc/danial/alpine-base:latest

# 安装软件包 (推荐用法)
RUN apk add --no-cache \
    python3 \
    py3-pip \
    nginx \
    && rm -rf /var/cache/apk/*

# 安装开发工具 (构建阶段)
RUN apk add --no-cache --virtual .build-deps \
    gcc \
    musl-dev \
    linux-headers \
    && # 构建操作...
    && apk del .build-deps

🌍 环境变量

变量名 默认值 描述
TZ Asia/Shanghai 系统时区
LANG en_US.UTF-8 系统语言
APP_USER appuser 应用用户名
APP_UID 1001 应用用户 ID
APP_GID 1001 应用用户组 ID

🔍 镜像信息

属性
基础镜像 Alpine Linux Latest
镜像大小 ~50MB (压缩后 ~20MB)
用户权限 非 root 用户 (appuser:1001)
时区 Asia/Shanghai
Shell /bin/bash
架构 amd64, arm64 (多平台支持)
安全扫描 通过基础安全扫描

优势

🚀 性能优势

  • 快速构建: 预装常用工具和配置,减少构建时间
  • 网络优化: 中国镜像源,包下载速度提升 5-10 倍
  • 轻量化: 基于 Alpine Linux镜像体积小
  • 启动快速: 最小化启动服务,容器启动时间 < 2 秒

🔒 安全优势

  • 非 root 用户: 降低安全风险
  • 最小权限: 只包含必要的系统工具
  • 定期更新: 跟踪 Alpine 安全更新
  • 证书支持: 支持企业内部 PKI 基础设施

🛠️ 运维优势

  • 标准化: 统一的基础环境,减少环境差异
  • 可维护: 集中化的配置管理
  • 监控友好: 预装常用监控工具
  • 日志规范: 标准化的日志输出格式

🐛 故障排除

常见问题

1. 包安装失败

# 问题apk 安装包时出现网络错误
# 解决:更新镜像源或使用代理
sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories

2. 权限问题

# 问题:应用无法写入文件
# 解决:确保文件所有者正确
chown -R appuser:appuser /app
chmod 755 /app

3. 时区问题

# 问题:时间显示不正确
# 解决:设置正确的时区
export TZ=Asia/Shanghai
ln -snf /usr/share/zoneinfo/$TZ /etc/localtime

4. 证书问题

# 问题HTTPS 请求证书验证失败
# 解决:更新 CA 证书
update-ca-certificates

调试命令

# 查看系统信息
docker run --rm git.oceanpay.cc/danial/alpine-base:latest uname -a

# 检查用户权限
docker run --rm git.oceanpay.cc/danial/alpine-base:latest id

# 验证网络连接
docker run --rm git.oceanpay.cc/danial/alpine-base:latest curl -I https://www.google.com

# 检查包版本
docker run --rm git.oceanpay.cc/danial/alpine-base:latest apk list --installed

📝 更新日志

v1.2.0 (2024-12-17)

  • 新增 unzipprocps 工具
  • 优化 Docker 构建缓存策略
  • 增强文档和使用示例
  • 改进用户权限配置

v1.1.0 (2024-11-01)

  • 添加健康检查支持
  • 优化镜像大小 (减少 15%)
  • 更新基础镜像到最新版本
  • 修复证书挂载问题

v1.0.0 (2024-10-01)

  • 初始版本发布
  • 基础 Alpine 环境配置
  • 中国镜像源支持
  • 非 root 用户配置

📞 支持

如有问题或建议,请通过以下方式联系:


构建完成后镜像将标记为 alpine-base:latest,建议在 CI/CD 流程中使用具体版本标签以确保部署一致性。