📜  sql server dockerfile bak (1)

📅  最后修改于: 2023-12-03 14:47:35.542000             🧑  作者: Mango

SQL Server Dockerfile Bak

本文将介绍如何使用Docker容器构建一个SQL Server实例,并将其BAK备份到指定的位置。如果您是SQL Server开发人员或DBA,那么本文对您来说将会非常有用。

Dockerfile

首先,我们需要编写一个Dockerfile,用它来指导Docker构建我们的SQL Server容器。以下是Dockerfile的示例:

FROM mcr.microsoft.com/mssql/server:2019-latest

ENV ACCEPT_EULA=Y \
    SA_PASSWORD=<your_strong_password> \
    MSSQL_PID=Developer

ARG BACKUP_DIRECTORY=/var/opt/mssql/backup/
ARG BAK_FILE=example.bak

WORKDIR $BACKUP_DIRECTORY

ADD ./bak/$BAK_FILE ./

HEALTHCHECK --interval=10s --timeout=3s \
  CMD /opt/mssql-tools/bin/sqlcmd \
    -U sa -P <your_strong_password> \
    -Q "SELECT 1" \
    || exit 1

VOLUME /var/opt/mssql/data
VOLUME /var/opt/mssql/backup
  • FROM 指定了使用已经存在的 microsoft/mssql-server-linux 镜像(docker pull microsoft/mssql-server-linux:latest)作为基础镜像;
  • ENV 配置了容器的基本环境:同意EULA / 设定SA用户密码 / 指定SQL Server版本类型;
  • ARG 用于声明构建时的参数,指定备份文件所在目录及名称;
  • WORKDIR 切换到指定工作目录,复制备份文件到容器内;
  • HEALTHCHECK 检查容器健康状态,如果SQL Server能正常运行,那么健康检查的结果将为成功;
  • VOLUME 创造一组持久化数据卷,数据卷可进行数据持久化。
配置和运行

在上一步中,已经准备好一个Dockerfile,现在是时候构建它并运行一个SQL Server容器了!在构建之前,请将备份文件复制到~/example/backup目录下。

在终端中输入以下命令:

# 要构建Docker镜像,请使用以下命令:
docker build --tag sql-server:latest .

# 要在容器中创建并运行SQL Server,请使用以下命令:
docker run -p 1433:1433 -d \
-e 'ACCEPT_EULA=Y' \
-e 'SA_PASSWORD=<your_strong_password>' \
-e 'MSSQL_PID=Developer' \
--name sql-server_container \
sql-server:latest

以上命令分别创建了一个名为 sql-server_container 的容器,并将它们绑定到 1433 端口。

备份

现在,我们已经成功运行了SQL Server,接下来我们需要备份它。以下命令可将BAK文件从容器中导出到本地:

# 备份SQL Server的命令:
docker exec -it sql-server_container /opt/mssql-tools/bin/sqlcmd \
  -U sa -P <your_strong_password> \
  -Q "BACKUP DATABASE ExampleDB TO DISK='/var/opt/mssql/backup/example.bak'"

# 备份文件从Docker容器中拷贝到~/example/backup目录下:
docker cp sql-server_container:/var/opt/mssql/backup/example.bak ~/example/backup/
安全说明

当运行SQL Server容器时,请确保使用安全的密码,以及防火墙规则,以避免未经授权访问。

结论

使用本指南,您可以轻松地使用Docker容器在本地运行SQL Server,并将您的数据备份到指定位置。这提供了数据持久化解决方案,以及更安全的数据管理方式。

参考文献