0

我的campany 部署了一个Openshift okd4 集群(4.7)来运行我们的api 和web 应用程序。对于我们的构建配置,我们使用源到镜像 (s2i) 构建策略来生成我们的自定义镜像,并结合 gitlab 来获取我们的源代码。构建自定义映像后,我们将其部署。在基于 php 的项目的构建阶段,我们使用 assemble 脚本来安装和生成我们的供应商以及 composer install 和一些其他安装。

我确实面临使用这种策略的项目的问题。执行 assemble 脚本时,openshift builder 切换到用户 1001,这导致在我们的构建期间权限被拒绝,因此下面的失败是来自构建的日志:

STEP 4: USER root
STEP 5: COPY upload/scripts /tmp/scripts
STEP 6: COPY upload/src /tmp/src
STEP 7: RUN chown -R 1001:0 /tmp/scripts /tmp/src
STEP 8: USER 1001
STEP 9: RUN /tmp/scripts/assemble
chown: cannot read directory '/var/lib/mysql': Permission denied

有什么方法可以强制 s2i builder 在步骤 8 中保持 root 身份?在构建配置中指定的任何选项来做这样的事情?或者有什么方法可以使用 dockerfile 策略进行类似的构建?

我试图在构建配置中指定这个标签:

  labels:
    app: build-app
    io.openshift.s2i.assemble-user: root

建设者没有考虑到这一点。

任何想法可能会有所帮助

向所有人致以最诚挚的问候,

4

1 回答 1

0

这是一个 Openshift 安全策略问题。

有用的链接:

Openshift pod 运行的用户 ID 与 Dockerfile 中的用户不匹配

https://cloud.redhat.com/blog/a-guide-to-openshift-and-uids

于 2021-08-16T14:13:33.867 回答