All checks were successful
continuous-integration/drone/push Build is passing
- 移除 alpine-base README 中的邮箱、Issues 和文档支持信息 - 删除 kami-gateway README 中的项目仓库、问题反馈、文档和技术支持信息 - 清理 kami-spider-monorepo README 中的技术支持、安全报告及商务合作联系方式 - 保持构建标签和版本建议内容未变更
7.2 KiB
7.2 KiB
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)
- 新增
unzip和procps工具 - 优化 Docker 构建缓存策略
- 增强文档和使用示例
- 改进用户权限配置
v1.1.0 (2024-11-01)
- 添加健康检查支持
- 优化镜像大小 (减少 15%)
- 更新基础镜像到最新版本
- 修复证书挂载问题
v1.0.0 (2024-10-01)
- 初始版本发布
- 基础 Alpine 环境配置
- 中国镜像源支持
- 非 root 用户配置
构建完成后镜像将标记为 alpine-base:latest,建议在 CI/CD 流程中使用具体版本标签以确保部署一致性。