Как добавить файл конфигурации в непустую директорию приложения Openshift v3

Я развернул приложение PHP + postgreqsl (TinyTiny RSS, https://github.com/dittos/ttrss-mirror) на новом Openshift v3. При первоначальном доступе вы создаете config.php из доступного шаблона, который содержит пароли БД и т. д., чтобы tt-rss мог подключиться к базе данных. Теперь мне нужно добавить этот файл в корневой каталог приложения (/ opt / app-root / src /), где его ожидает tt-rss.

Следуя, по-видимому, каноническому способу, я создал ConfigMap с ключом config.php и содержимое файла в качестве значения. Однако при монтировании этого файла конфигурации в объем чтобы сделать его доступным для приложения, я столкнулся с проблемами, так как очевидно, что точка крепления тома — несуществующий каталог, поэтому, когда я указал целевой путь / opt / app-root / src /, код моего приложения был перезаписан.

Затем я нашел далеко в предоставить один файл в уже заполненном каталоге:

вам нужно указать абсолютный путь, включая имя файла в mountPath и имя файла снова в subPath. Имя файла (очевидно) должно соответствовать ключу в вашей карте конфигурации.

Я сделал это, но это приводит к недоступности (нет разрешений) config.php файл с очень странными свойствами, см. выдержку из ls -la в развернутом модуле:

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 сам.

Я не хочу выдвигать его в (публичный) репозиторий с исходным кодом, поскольку он содержит секреты, а репозиторий с исходным кодом на самом деле является репозиторием, который я предпочел бы не разветвлять и постоянно обновлять сам.

0

Решение

Не будучи знакомым с tt-rss, я хотел бы предварительно создать файл config.php и включить его в исходный код. Вы можете использовать переменные окружения в config.php для любых значений, которые могут измениться.

И тогда неясно, нужно ли перемещать файл config.php из вашего каталога репо или нет, но все, что вам нужно будет сделать после того, как контейнер уже запущен, является идеальным вариантом использования для .скрипты s2i / bin. Вот образец run скрипт, используйте его точно так же, как есть, а затем просто добавьте все, что вам нужно, например, перемещение файлов или изменение разрешений (примечание: вы не можете изменить то, что требует прав root). Наконец, любая дополнительная настройка PHP cam может быть выполнена с помощью переменных среды, определенных в Документация по PHP S2I.

0

Другие решения

Видимо, это текущая ошибка, см. https://github.com/openshift/origin/issues/15750 а также https://bugzilla.redhat.com/show_bug.cgi?id=1481617#c1.

В качестве обходного пути укажите subPath как это: subPath: ..data/config.phpи все начинает работать как положено.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector