docker-在sql-服务器-linux中组合还原数据库
docker-compose restore database in sql-server-linux
我正在跟随 https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-configure-docker?view=sql-server-2017 成功配置和 运行 在 macOS 中使用持久数据的独立 sqlserver 容器。现在我想创建一个 docker-compose 文件,其中包含 2 个内容:
- 网络
- 数据库(将bak文件从主机复制到容器中并恢复)
我如何实现 (2)?
我的docker-撰写文件:
version: "3"
services:
web:
build:
context: ./webapi
dockerfile: Dockerfile
ports:
- "4010:80"
environment:
- ASPNETCORE_ENVIRONMENT=Development
depends_on:
- db
db:
image: "mcr.microsoft.com/mssql/server:2017-latest"
ports:
- "4009:1433"
volumes:
- "sqlvolume:/var/opt/mssql"
environment:
SA_PASSWORD: "<password>"
ACCEPT_EULA: "Y"
redis:
image: "redis:alpine"
volumes:
sqlvolume:
有许多不同的方法可以完成还原任务。如果您的备份位于挂载的卷上,您可以使用 sqlcmd 进行恢复,例如:
run docker exec -it db /opt/mssql-tools/bin/sqlcmd -Usa -P<password> -Q"RESTORE DATABASE YourDatabase FROM DISK='/var/opt/mssql/backup/your-backup.bak';"
您可以类似地使用 docker cp
将备份复制到容器中,然后从那里恢复。
如果您的 objective 是在每次容器启动时从安装的卷恢复数据库,您可以使用 RESTORE
命令构建自定义 SQL 服务器映像(这可能封装在 shell 脚本中)。下面是一个 dockerfile
示例:
FROM mcr.microsoft.com/mssql/server:2017-latest
CMD /opt/mssql-tools/bin/sqlcmd -U 'sa' -P $MSSQL_SA_PASSWORD -Q"RESTORE DATABASE YourDatabase FROM DISK='/var/opt/mssql/backup/your-backup.bak';" & /opt/mssql/bin/sqlservr
我正在跟随 https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-configure-docker?view=sql-server-2017 成功配置和 运行 在 macOS 中使用持久数据的独立 sqlserver 容器。现在我想创建一个 docker-compose 文件,其中包含 2 个内容:
- 网络
- 数据库(将bak文件从主机复制到容器中并恢复)
我如何实现 (2)?
我的docker-撰写文件:
version: "3"
services:
web:
build:
context: ./webapi
dockerfile: Dockerfile
ports:
- "4010:80"
environment:
- ASPNETCORE_ENVIRONMENT=Development
depends_on:
- db
db:
image: "mcr.microsoft.com/mssql/server:2017-latest"
ports:
- "4009:1433"
volumes:
- "sqlvolume:/var/opt/mssql"
environment:
SA_PASSWORD: "<password>"
ACCEPT_EULA: "Y"
redis:
image: "redis:alpine"
volumes:
sqlvolume:
有许多不同的方法可以完成还原任务。如果您的备份位于挂载的卷上,您可以使用 sqlcmd 进行恢复,例如:
run docker exec -it db /opt/mssql-tools/bin/sqlcmd -Usa -P<password> -Q"RESTORE DATABASE YourDatabase FROM DISK='/var/opt/mssql/backup/your-backup.bak';"
您可以类似地使用 docker cp
将备份复制到容器中,然后从那里恢复。
如果您的 objective 是在每次容器启动时从安装的卷恢复数据库,您可以使用 RESTORE
命令构建自定义 SQL 服务器映像(这可能封装在 shell 脚本中)。下面是一个 dockerfile
示例:
FROM mcr.microsoft.com/mssql/server:2017-latest
CMD /opt/mssql-tools/bin/sqlcmd -U 'sa' -P $MSSQL_SA_PASSWORD -Q"RESTORE DATABASE YourDatabase FROM DISK='/var/opt/mssql/backup/your-backup.bak';" & /opt/mssql/bin/sqlservr