【问题标题】:RUN Script after sql service up in dockerfile在 dockerfile 中启动 sql 服务后运行脚本
【发布时间】:2021-05-17 10:58:56
【问题描述】:

我的应用程序有一个数据库,我想在运行时 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)启动后运行我的脚本?

【问题讨论】:

  • 制作一个带有服务的 docker-compose,负责根据 sql 服务运行脚本。

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


【解决方案1】:

您可以使用 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命令。

【讨论】:

    猜你喜欢
    • 2020-08-02
    • 1970-01-01
    • 1970-01-01
    • 2018-12-05
    • 2013-09-03
    • 2020-01-02
    • 1970-01-01
    • 2021-10-19
    • 2016-04-05
    相关资源
    最近更新 更多