【问题标题】:Sql Server with default backup in docker containerDocker 容器中具有默认备份的 Sql Server
【发布时间】:2019-11-29 12:38:42
【问题描述】:

我需要创建一个带有备份文件的 SQL 数据库服务器的 docker 映像。所以从该镜像创建的所有容器都有备份文件。

关于如何做到这一点的任何建议?

【问题讨论】:

  • 在构建时使用 dockerfile 中的COPY 指令将备份复制到映像中。

标签: sql-server docker docker-compose dockerfile


【解决方案1】:

您创建一个新目录,并在其中创建一个名为“dockerfile”的文本文件,其内容如下:

FROM mcr.microsoft.com/mssql/server:2019-GA-ubuntu-16.04
RUN mkdir -p "/var/opt/mssql/data/backup"
COPY "/home/username/mybackup.bak" "/var/opt/mssql/data/backup"
COPY "/home/username/RestoreBackup.sql" "/var/opt/mssql/data/backup/RestoreBackup.sql"
RUN /opt/mssql-tools/bin/sqlcmd -S localhost\instanceName -U SA -P $env:sa_password -i "/var/opt/mssql/data/backup/RestoreBackup.sql"
RUN rm "/var/opt/mssql/data/backup/mybackup.bak"
RUN rm "/var/opt/mssql/data/backup/RestoreBackup.sql"

然后在/path/to/dockerfile启动一个控制台,并执行

docker build -t custom_sql_server_image:v1 .

您现在拥有一个自定义 docker-image 的 sql-server 和已恢复的数据库。

RestoreBackup.sql 将包含类似于

的内容
RESTORE DATABASE YOUR_DB_Name
   FROM DISK = '/var/opt/mssql/data/backup/mybackup.bak' ;  

这假设您正在构建 sql-server 的 Linux-docker-image。
注意:
这很重要,因为Linux dockerfile 是用FROM ubuntu:16.04 构建的,而Windows dockerfile 是用FROM microsoft/windowsservercore 构建的。

您可能需要弄清楚如何获取 SA 密码。
在 microsoft dockerfile 中,他们使用$env:sa_password


至于发布,您需要注册dockerhub的登录名。
然后你登录到 dockerhub,并创建一个存储库(例如 custom_sql)

接下来,你需要在控制台登录:

docker login --username=yourhubusername --email=youremail@company.com

然后您需要获取您使用“build”创建的 docker-image 的 docker-image-id。
为此,运行

docker images

然后你需要用一个版本来标记你的图像(其中 bb38976d03cf 是从命令“docker images”获得的 docker-image-id):

docker tag bb38976d03cf yourhubusername/custom_sql:firsttry

然后你将图像推送到存储库

docker push yourhubusername/custom_sql

另见sqlhack.com article from Ranga Babu

【讨论】:

  • 非常感谢您的提示,但我认为有问题,因为我在构建 dockerfile 时,出现以下错误:来自守护进程的错误响应:Dockerfile 解析错误第 7 行:未知指令: /OPT/MSSQL-TOOLS/BIN/SQLCMD
  • @lucas.bomfonti:抱歉,这是运行 /opt/mssql-tools/bin/sqlcmd,而不仅仅是 /opt/mssql-tools/bin/sqlcmd。在帖子中修复它。
猜你喜欢
  • 2020-07-16
  • 2019-04-12
  • 1970-01-01
  • 2016-10-21
  • 2019-02-17
  • 2010-09-12
  • 2013-07-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多