本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com
本镜像为Kubernetes环境下的Init Container,旨在通过Kubernetes Secrets存储的配置信息,自动化完成数据库的初始化流程。其核心功能是在Pod启动阶段,读取 Secrets 中的数据库连接参数(如用户名、密码、地址等),执行必要的初始化操作(如创建数据库、用户、权限配置或SQL脚本执行),确保主应用容器启动前数据库环境已准备就绪。初始化完成后自动退出(符合Init Container生命周期特性),若失败则终止Pod启动并输出错误信息,便于问题排查。
需提前创建存储数据库连接参数的Secrets(以下以MySQL为例),包含数据库地址、端口、用户名、密码等关键信息。若需执行SQL脚本,可额外创建存储脚本的Secrets。
# db-credentials-secret.yaml apiVersion: v1 kind: Secret metadata: name: db-credentials namespace: default # 与Pod同命名空间 type: Opaque data: # 注意:值需Base64编码(可通过 echo -n "value" | base64 生成) db_host: bXlzcWwubG9jYWw= # 示例:mysql.local(Base64编码后) db_port: NTQzMg== # 示例:5432(PostgreSQL默认端口)或3306(MySQL) db_user: dXNlcjE= # 示例:user1 db_password: cGFzc3dvcmQxMjM= # 示例:password123 db_name: bXlkYg== # 示例:mydb(需初始化的数据库名称)
# init-sql-secret.yaml apiVersion: v1 kind: Secret metadata: name: init-sql-scripts namespace: default type: Opaque data: # 多行SQL脚本示例(创建表、插入初始数据) schema.sql: Q1JFQVRFIFRBQkxFIGZvbyAoCmNvZGluZzogdmFyaWFudCwKbmFtZTogc3RyaW5nCik7CgogSU5TRVJUIElOVE8gZm9vICh2Y***YW50LCAnYmFyJyk7 # Base64编码后的SQL内容
在Pod定义中,通过initContainers字段配置本镜像,指定所需环境变量(用于关联Secrets和初始化参数)。主应用容器需依赖Init Container完成后启动(通过initContainers默认依赖关系实现)。
# app-pod.yaml apiVersion: v1 kind: Pod metadata: name: app-with-db-init namespace: default spec: initContainers: - name: db-init image: [镜像名称] # 替换为实际镜像地址(如registry.example.com/db-bootstrap:v1.0) env: # 数据库类型(必填,支持:mysql/postgresql/mariadb/sqlserver) - name: DB_TYPE value: "postgresql" # 数据库连接参数Secrets配置(必填) - name: SECRET_DB_CREDENTIALS value: "db-credentials" # 对应上文创建的db-credentials Secrets名称 - name: SECRET_DB_HOST_KEY value: "db_host" # Secrets中存储主机地址的键名(对应data.db_host) - name: SECRET_DB_PORT_KEY value: "db_port" # Secrets中存储端口的键名 - name: SECRET_DB_USER_KEY value: "db_user" # Secrets中存储用户名的键名 - name: SECRET_DB_PASSWORD_KEY value: "db_password" # Secrets中存储密码的键名 - name: SECRET_DB_NAME_KEY value: "db_name" # Secrets中存储数据库名称的键名 # SQL脚本配置(可选,若无需脚本则删除以下2项) - name: SECRET_SQL_SCRIPTS value: "init-sql-scripts" # 对应上文创建的SQL脚本Secrets名称 - name: SECRET_SQL_KEY value: "schema.sql" # Secrets中存储SQL脚本的键名 # 日志级别(可选,默认:info,支持:debug/info/warn/error) - name: LOG_LEVEL value: "debug" containers: - name: main-app image: [主应用镜像] # 主应用容器镜像 # 主应用容器配置(如端口、环境变量等) ports: - containerPort: 8080
| 环境变量名 | 描述 | 取值范围/示例 | 是否必填 | 默认值 |
|---|---|---|---|---|
DB_TYPE | 目标数据库类型 | mysql/postgresql/mariadb/sqlserver | 是 | - |
SECRET_DB_CREDENTIALS | 存储数据库连接参数的Secrets名称 | db-credentials | 是 | - |
SECRET_DB_HOST_KEY | Secrets中存储数据库主机地址的键名 | db_host | 是 | - |
SECRET_DB_PORT_KEY | Secrets中存储数据库端口的键名 | db_port | 是 | - |
SECRET_DB_USER_KEY | Secrets中存储数据库用户名的键名 | db_user | 是 | - |
SECRET_DB_PASSWORD_KEY | Secrets中存储数据库密码的键名 | db_password | 是 | - |
SECRET_DB_NAME_KEY | Secrets中存储目标数据库名称的键名(需初始化的数据库) | db_name | 否 | default |
SECRET_SQL_SCRIPTS | 存储SQL初始化脚本的Secrets名称(若需执行脚本) | init-sql-scripts | 否 | - |
SECRET_SQL_KEY | Secrets中存储SQL脚本内容的键名(配合SECRET_SQL_SCRIPTS使用) | schema.sql | 否 | - |
LOG_LEVEL | 日志输出级别 | debug/info/warn/error | 否 | info |
CONNECT_TIMEOUT | 数据库连接超时时间(秒) | 10-300 | 否 | 30 |
RETRY_MAX_ATTEMPTS | 数据库连接失败后的重试次数 | 1-10 | 否 | 3 |
initContainers中的db-init容器。db-init容器通过环境变量指定的Secrets名称和键名,从Kubernetes API获取数据库连接参数和SQL脚本(若配置)。CONNECT_TIMEOUT和RETRY_MAX_ATTEMPTS控制)。SECRET_DB_NAME_KEY指定的数据库、授予用户权限)。SECRET_SQL_KEY对应的SQL内容(支持多行脚本,按顺序执行)。Init:Error,需通过日志排查问题。containers字段中的主应用容器。kubectl describe pod <pod-name>),确认Secrets是否存在、键名是否正确(如SECRET_DB_HOST_KEY是否与Secrets中的键匹配)。kubectl logs <pod-name> -c db-init),确认数据库地址、端口是否可达,用户名/密码是否正确。kubectl get secret init-sql-scripts -o jsonpath='{.data.schema.sql}' | base64 -d解码查看原始脚本)。免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录方式配置轩辕镜像加速服务,包含7个详细步骤
在 Linux 系统上配置轩辕镜像源,支持主流发行版
在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统
在 Docker Compose 中使用轩辕镜像加速,支持容器编排
在 k8s 中配置 containerd 使用轩辕镜像加速
在宝塔面板中配置轩辕镜像加速,提升服务器管理效率
在 Synology 群晖NAS系统中配置轩辕镜像加速
在飞牛fnOS系统中配置轩辕镜像加速
在极空间NAS中配置轩辕镜像加速
在爱快ikuai系统中配置轩辕镜像加速
在绿联NAS系统中配置轩辕镜像加速
在威联通NAS系统中配置轩辕镜像加速
在 Podman 中配置轩辕镜像加速,支持多系统
配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤
无需登录即可使用轩辕镜像加速服务,更加便捷高效
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429