我正在运行一个 .NET Razor 应用程序、一个 gitea 实例和一个 SQL Server 数据库,每个容器都在相互通信的单独容器中。我想使用数据库架构和数据(通过恢复文件.bak)启动我的数据库映像。
我可以使用当前的 Dockerfile 来执行此操作,如果它启动并运行后,我可以运行以下附加命令:
docker exec -it myContainer /opt/mssql-tools/bin/sqlsmd -S localhost -U sa -P myPassword
/opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P myPassword -Q "RESTORE DATABASE MY_DB_NAME FROM DISK='/var/opt/mssql/backup/MY_DB_NAME.bak' WITH MOVE 'MY_DB_NAME_TEST' TO '/var/opt/mssql/data/MY_DB_NAME_TEST.mdf', MOVE 'MY_DB_NAME_TEST_log' TO '/var/opt/mssql/data/MY_DB_NAME_TEST_log.ldf'"
这样就完成了工作,但我想完全自动化该过程,以便由我的 docker-compose.yml 和 Dockerfile 100% 配置,所以我只需要输入:docker-compose up -d。
我认为 docker-compose.yml 文件的内容不相关,但这是我的 Dockerfile(我正在尝试运行当前需要运行的脚本docker-compose up):
FROM microsoft/mssql-server-linux
ENV SA_PASSWORD=myPassword
ENV ACCEPT_EULA=Y
COPY ./ACES_DB.bak /var/opt/mssql/backup/MY_DB_NAME.bak
RUN docker exec -it myContainer bin/sh /opt/mssql-tools/bin/sqlcmd …Run Code Online (Sandbox Code Playgroud)