小编use*_*658的帖子

“google cloud run”将 HOME 更改为 CMD 的 /home,其中 RUN 使用 /root

我正在做的是在 Dockerfile 中的 RUN 命令中设置 sbcl 和 Quicklisp,然后使用 CMD 加载我的自定义代码。

当我在本地计算机上使用 Docker 运行它时,一切都很好,但是当我将其推送到“google run”时,lisp 代码(使用 CMD 加载)崩溃,因为它找不到 Quicklisp。

据我所知,这是因为 RUN (/root) 和 CMD (/home) 的 HOME 不同。

RUN 和 CMD 中是同一个用户 = uid=0(root) gid=0(root) groups=0(root)

我假设他们(谷歌运行)使用一些 linux 命令来更改用户的“用户上下文”(不知道用于 linux 的正确单词),但不知道他们为什么或如何这样做。因为我不知道他们这样做是什么或为什么,所以很难通过谷歌搜索解决方案。

欢迎大家提出意见。

要查看行为:

Dockerfile:

FROM    phusion/baseimage
MAINTAINER     Piet Pompies <piet@pompies.com>

RUN echo $HOME
CMD echo $HOME 
Run Code Online (Sandbox Code Playgroud)

当您构建 $HOME 时,它将是 /root;当您部署并运行时,它将是 /home

编辑:我找到了解决方法(2020 年 6 月 12 日):

不确定我是否应该将解决方法放在答案中,或者只是像我在这里所做的那样进行编辑。将其保留在编辑中,直到另有通知为止。

解决方法:

您可以在 RUN 命令中转储核心并在 CMD 中使用它或使用 buildapp 来运行 lisp。buildapp 是您在最终版本中想要的。

完整的 woo 和 …

docker google-cloud-run

9
推荐指数
0
解决办法
804
查看次数

标签 统计

docker ×1

google-cloud-run ×1