在 dockerfile 中启动 sql 服务后运行脚本

时间:2021-02-14 06:47:21

标签: sql-server bash docker dockerfile docker-engine

我的应用程序有一个数据库,我想在运行时 docker 中创建它

我有一个文件 CreateDB.sh,它创建了我想要的所有表和存储过程。

我试过了:

FROM mcr.microsoft.com/mssql/server

ENV ACCEPT_EULA=Y \
    SA_PASSWORD=qwe123QWE

USER root
RUN mkdir /home/db
COPY ./db /home/db
RUN chmod +x /home/db/DbScriptLinux.sh
WORKDIR /home/db/
CMD ["/bin/bash", "/home/db/DbScriptLinux.sh"]

但它返回一个错误:

<块引用>

登录超时

有没有办法在所有服务(sql-server)启动后运行我的脚本?

1 个答案:

答案 0 :(得分:0)

您可以使用 if 语句,例如 RUN if [[ -z "$arg" ]] ; then echo Argument not provided ; else echo Argument is $arg ; fi

另一种方法是使用 command1 && command2,因此如果命令 1 成功,则命令 2 将在之后运行。

你的最后一行CMD ["/bin/bash", "/home/db/DbScriptLinux.sh"],如果这是每次启动容器时启动数据库,作为你默认运行的命令,那么应该没问题,否则最好使用RUN命令。