【发布时间】:2019-11-29 12:38:42
【问题描述】:
我需要创建一个带有备份文件的 SQL 数据库服务器的 docker 映像。所以从该镜像创建的所有容器都有备份文件。
关于如何做到这一点的任何建议?
【问题讨论】:
-
在构建时使用 dockerfile 中的
COPY指令将备份复制到映像中。
标签: sql-server docker docker-compose dockerfile
我需要创建一个带有备份文件的 SQL 数据库服务器的 docker 映像。所以从该镜像创建的所有容器都有备份文件。
关于如何做到这一点的任何建议?
【问题讨论】:
COPY 指令将备份复制到映像中。
标签: sql-server docker docker-compose dockerfile
您创建一个新目录,并在其中创建一个名为“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
【讨论】: