gpt4 book ai didi

docker - 是否有一个dockerfile RUN命令在主机上执行自变量?

转载 作者:行者123 更新时间:2023-12-02 21:14:47 25 4
gpt4 key购买 nike

我们正在尝试构建一个包含完整应用程序的Docker堆栈:一个Postgres数据库和至少一个Web应用程序。

启动堆栈时,我们希望应用程序能够立即运行-由于数据库设置或数据导入而不会造成任何延迟。因此,在创建镜像时必须导入数据库架构(DDL)和初始数据。

例如,这可以通过dockerfile中的RUN命令来实现

RUN psql.exe -f initalize.sql -h myhost -d mydatabase -U myuser
RUN data-import.exe myhost mydatabase myuser

但是,AFAIU会在Postgres容器内执行 data-import.exe,仅当Postgres容器是Windows容器时才能工作。我们的产品使用Linux Postgres发行版,所以这不是一个好主意。我们需要将该镜像作为Linux Postgres容器。

因此,自然的解决方案是在主机上执行 data-import.exe,如下所示:
  • 当我们运行docker build时,将启动Linux Postgres容器。
  • RUN psql.exe ...在Postgres容器内运行一些SQL命令。
  • 现在,我们的data-import.exe在主机上执行。它的Postgres客户端连接到容器中的数据库并导入数据。
  • 完成数据导入后,数据将提交到镜像,并且docker构建一个镜像,其中包含Postgres数据库以及导入的数据。

  • 有这样的命令吗?如果没有,我们如何在Docker中实现此方案?

    最佳答案

    使用正确的工具,dockerfile并非一切。

    显然,您来自某种状态,在使用某些导入工具之前已经进行了postgres。现在您可以通过启动postgres容器(没有dockerfile,只有docker / kubernetes)来模仿该策略。然后运行导入工具,停止postgres-container,并使用“docker commit”对结果进行快照。提交的镜像将用于部署的下一阶段。

    关于docker - 是否有一个dockerfile RUN命令在主机上执行自变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51901571/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com