kubernetes - 如何将配置文件放在 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 初始化期间)。
解决方案
如何将 ConfigMap 安装在您真正想要的位置而不是复制过来?
更新:
@ccshih 提到的初始化容器应该可以,但也可以尝试其他选项:
- 使用 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
- 通过修改图像或 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
推荐阅读
- php - 是否可以有两个不同的域访问同一个 MySql 数据库?
- spring-boot - 想在springboot restapi中实现Search功能
- c++ - 单击一行以显示来自客户端的信息,Excell 类型的 Qt 表
- python - pytest中的夹具执行顺序
- reactjs - 使用 axios 和 formik 进行登录认证
- ios - FirebaseQuery 观察者未删除
- android - 线程运行时,文本视图不会在屏幕上从左到右滚动
- python - 为什么我会收到一个错误,整数太大而无法在我的 python 脚本中转换为浮点数?
- algorithm - 关于经典硬币找零问题的两种方法的问题
- reactjs - 在 React 中处理状态变化