You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将含MariaDB备份的Docker镜像制作流程写入Dockerfile?

解决方案:将MariaDB备份集成到Docker镜像并部署到Azure Pipeline

一、编写Dockerfile实现数据库初始化

MariaDB官方镜像自带自动初始化机制:容器首次启动时,会自动执行/docker-entrypoint-initdb.d/目录下的.sql、.sh类脚本,我们可以利用这个特性完成数据库创建和备份导入,无需手动执行命令。

1. 调整备份SQL文件

在本地的smdb-dev.sql开头添加以下内容,确保容器启动时自动创建目标数据库并切换到该库:

CREATE DATABASE IF NOT EXISTS smdb_dev;
USE smdb_dev;

2. 编写Dockerfile

# 基于指定版本的MariaDB镜像
FROM mariadb:10.4.26

# 用构建参数传递root密码(避免硬编码)
ARG MYSQL_ROOT_PASSWORD
# 将构建参数转为环境变量,供初始化脚本使用
ENV MYSQL_ROOT_PASSWORD=$MYSQL_ROOT_PASSWORD

# 将备份SQL文件复制到镜像的初始化目录
COPY smdb-dev.sql /docker-entrypoint-initdb.d/

说明:构建镜像时不会直接执行数据库操作,而是将初始化脚本打包进镜像,当容器首次启动时,MariaDB会自动完成数据库创建和数据导入。

二、Azure Pipeline配置:构建并推送镜像到Azure容器注册表

以下是完整的Pipeline YAML配置,实现镜像构建、推送至Azure容器注册表的流程:

trigger:
- main  # 触发Pipeline的分支

variables:
  # 替换为你的Azure容器注册表名称
  acrName: 'your-acr-name'
  # 镜像名称
  imageName: 'mariadb-smdb'
  # 镜像标签,用构建ID自动生成唯一版本
  imageTag: '$(Build.BuildId)'
  # Dockerfile路径
  dockerfilePath: '$(Build.SourcesDirectory)/Dockerfile'

stages:
- stage: BuildAndPush
  displayName: 构建并推送镜像
  jobs:
  - job: Build
    displayName: 构建任务
    pool:
      vmImage: 'ubuntu-latest'  # 使用Ubuntu虚拟机运行任务
    steps:
    # 登录到Azure容器注册表(需提前配置服务连接)
    - task: Docker@2
      displayName: 登录Azure容器注册表
      inputs:
        command: login
        containerRegistry: 'your-acr-service-connection'  # 替换为你的服务连接名称

    # 构建并推送镜像
    - task: Docker@2
      displayName: 构建并推送镜像到ACR
      inputs:
        command: buildAndPush
        repository: $(imageName)
        dockerfile: $(dockerfilePath)
        containerRegistry: 'your-acr-service-connection'
        buildArguments: '--build-arg MYSQL_ROOT_PASSWORD=$(MYSQL_ROOT_PASSWORD)'  # 传递密码参数
        tags: |
          $(imageTag)
          latest

关键配置说明:

  1. 服务连接:需在Azure DevOps中提前创建连接到Azure容器注册表的服务连接,命名与配置中的your-acr-service-connection一致。
  2. 密码安全:MYSQL_ROOT_PASSWORD需在Pipeline的「变量」中设置为秘密变量,避免明文泄露。
  3. 镜像标签:使用$(Build.BuildId)作为标签,确保每次构建的镜像版本唯一,也可根据需求自定义标签。

内容的提问来源于stack exchange,提问作者Ivajlo Iliev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 09:40:46