Как разместить конфигурационные файлы в модулях? - PullRequest
0 голосов
/ 09 января 2019

Например, я хочу разместить файл конфигурации приложения внутри:

/opt/webserver/my_application/config/my_config_file.xml

Я создаю ConfigMap из файла, а затем помещаю его в том вроде:

/opt/persistentData/

Идея состоит в том, чтобы потом запустить скрипт, который делает что-то вроде:

cp /opt/persistentData/my_config_file.xml  /opt/webserver/my_application/config/

Но это может быть любой скрипт startup.sh, который выполняет необходимые действия.

Как мне запустить эту команду / скрипт? (во время инициализации Pod перед запуском Tomcat).

Ответы [ 2 ]

0 голосов
/ 14 января 2019

Я бы сначала попробовал, если это работает.

  spec:
    containers:
    - volumeMounts:
      - mountPath: /opt/webserver/my_application/config/my_config_file.xml
        name: config
        subPath: my_config_file.xml
    volumes:
    - configMap:
        items:
        - key: KEY_OF_THE_CONFIG
          path: my_config_file.xml
        name: config
      name: YOUR_CONFIGMAP_NAME

Если нет, добавьте init контейнер для копирования файла.

spec:
  initContainers:
  - name: copy-config
    image: busybox
    command: ['sh', '-c', '/bin/cp /opt/persistentData/my_config_file.xml  /opt/webserver/my_application/config/']
0 голосов
/ 11 января 2019

Как насчет монтирования ConfigMap там, где вы на самом деле хотите его вместо копирования?

Обновление:

Указанный контейнер инициализации @ccshih должен работать, но можно попробовать и другие варианты:

  1. Создание собственного изображения, модифицирующего базовое, с использованием рецепта Docker. В приведенном ниже примере показано изображение openshift java + tomcat7, добавляется дополнительная папка в путь к классу приложения, поэтому вы можете смонтировать ConfigMap в / mnt / config, не перезаписывая ничего, оставляя обе папки доступными.

.

FROM openshift/webserver31-tomcat7-openshift:1.2-6
# add classpaths to config
RUN sed -i 's/shared.loader=/shared.loader=\/mnt\/config/' 
/opt/webserver/conf/catalina.properties
  1. Измените ENTRYPOINT приложения, либо изменив изображение, либо перехватив DeploymentConfig, см .: https://docs.okd.io/latest/dev_guide/deployments/deployment_strategies.html#pod-based-lifecycle-hook С помощью ловушек нужно просто помнить, чтобы вызывать исходную точку входа или скрипт запуска после того, как все пользовательские вещи сделаны.

.

spec:
  containers:
    -
    name: my-app
    image: 'image'
    command:
      - /bin/sh
    args:
      - '-c'
      - cp /wherever/you/have/your-config.xml /wherever/you/want/it/ && /opt/webserver/bin/launch.sh
...