首页 > 解决方案 > 如何将配置文件放在 pod 中?

问题描述

例如我想在里面放置一个应用程序配置文件:

/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 脚本。

如何运行此命令/脚本?(在 Tomcat 启动之前的 Pod 初始化期间)。

标签: kubernetesopenshift

解决方案


如何将 ConfigMap 安装在您真正想要的位置而不是复制过来?

更新:

@ccshih 提到的初始化容器应该可以,但也可以尝试其他选项:

  1. 使用 Docker 配方构建一个修改基础镜像的自定义镜像。下面的示例采用 java+tomcat7 openshift 映像,向应用程序类路径添加了一个附加文件夹,因此您可以将 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. 通过修改图像或 DeploymentConfig 挂钩来更改应用程序的 ENTRYPOINT,请参阅: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

推荐阅读