0

我在新的 Openshift v3 上部署了一个 PHP+postgreqsl 应用程序(TinyTiny RSS,https://github.com/dittos/ttrss-mirror )。在初始访问时,您从可用模板创建一个config.php,其中包含数据库密码等,以使 tt-rss 能够连接到数据库。现在我需要将该文件添加到 tt-rss 期望的应用程序根目录 (/opt/app-root/src/)。

按照明显规范的方式,我创建了一个配置映射,其中键config.php和文件内容作为值。但是,当将该配置文件挂载到中以使其对应用程序可用时,我遇到了问题,因为显然预计卷的挂载点是一个不存在的目录,所以当我给出 /opt/ 的目标路径时app-root/src/,我的应用程序代码被覆盖了。

然后,我找到了一种在已经填充的目录中提供单个文件的方法:

您需要提供绝对路径,包括 mountPath 中的文件名和 subPath 中的文件名。文件名(显然)需要与配置映射中的键匹配。

我这样做了,但这会导致config.php具有非常奇怪的属性的不可访问(无权限)文件,请参阅ls -la已部署 pod 中的摘录:

drwxrwxr-x.  8 default root  4096 Sep 29 13:41 classes                                                                                                                                               
-??????????  ? ?       ?        ?            ? config.php                                                                                                                                            
-rw-rw-r--.  1 default root  8057 Sep 29 13:41 config.php-dist

config.php-dist是模板。问号是怎么回事??此功能在 Openshift 上不起作用吗?

相关的 YAML 部分如下所示:

  volumeMounts:
    - mountPath: /opt/app-root/src/config.php
      name: volume-2k03m
      subPath: config.php

  volumes:
    - configMap:
        defaultMode: 420
        items:
          - key: config.php
            path: config.php
        name: tt-rss-config
      name: volume-2k03m

有没有办法修复这个配置?是否有另一种方法可以将其“注入”(因为需要更好的词)config.php到应用程序中?

有些人推荐符号链接,但我不知道如何以编程方式在所需位置创建符号链接,而不会遇到与config.php自身相同的问题。

我不想将它推送到(公共)源存储库,因为它包含秘密,而源存储库实际上是一个上游存储库,我不希望自己分叉并不断保持最新状态。

4

2 回答 2

0

不熟悉 tt-rss,我这样做的方法是预先创建 config.php 文件并将其包含在您的源代码中。您可以将 config.php 中的环境变量用于任何会更改的值。

然后不清楚您是否必须将 config.php 文件移出您的 repo 目录,但是在容器已经运行后您需要做的任何事情都是.s2i/bin 脚本的完美用例。这是一个示例run脚本,完全按原样使用它,然后只需添加您需要的任何其他内容,例如移动文件或更改权限(注意:您不能更改任何需要 root 权限的内容)。最后,任何额外的 PHP 配置都可以通过PHP S2I 文档中定义的环境变量来完成。

于 2017-09-30T13:27:57.173 回答
0

显然,这是一个当前的错误,请参阅https://github.com/openshift/origin/issues/15750https://bugzilla.redhat.com/show_bug.cgi?id=1481617#c1

作为一种解决方法,指定subPath如下:subPath: ..data/config.php,一切都开始按预期工作。

于 2017-10-03T07:45:53.180 回答