前面说了init容器initContainers,这主要是为应用容器做前期准备工作的,一般都会用到shell脚本,这就会用到command,这里写写command的用法。

command就是将命令在创建的容器中执行,有这些命令去完成一些工作,command用法和dockerfile中的cmd差不多, command可以单独写,也可以分成command和参数args,可以参考之前的CMD去理解,例如下面的写法都可以。

command: ['/bin/sh']

command:  ["rm", "-fr", "/var/lib/dbs/lost+found"]

command:
- 'sh'
- '-c'
- 'DATA_SOURCE_NAME="root@(localhost:3306)/" /bin/mysqld_exporter' command: ["sh", "-c", "until nslookup myservice; do echo waiting for myservice; sleep 2; done;"] command: ["sh"]
args: ["-c","until nslookup myservice; do echo waiting for myservice; sleep 2; done;"] livenessProbe:
exec:
command:
- /bin/sh
- -c
- 'wget -O - -q --header "Authorization: Basic `echo -n \"$RABBIT_MANAGEMENT_USER:$RABBIT_MANAGEMENT_PASSWORD\" | base64`" http://localhost:15672/api/healthchecks/node | grep -qF "{\"status\":\"ok\"}"'
initialDelaySeconds: {{ .Values.livenessProbe.initialDelaySeconds }}
periodSeconds: {{ .Values.livenessProbe.periodSeconds }}

另外args还有一种写法,可以理解成args后面是一个.sh文件,command来直接执行一个脚本文件,可以写相对复杂的脚本。

        command: ['sh']
args:
- "-c"
- |
set -ex
if [ ! -d "/opt/ShenTong/odbs/OSRDB" ];then
mkdir /opt/ShenTong/odbs/
cp -r /opt/OSRDB /opt/ShenTong/odbs/
else
echo "数据库文件已存在"
fi

最后贴一个官方写的一个rabbitmq的完整例子

    spec:
{{- if .Values.image.pullSecrets }}
imagePullSecrets:
{{- range .Values.image.pullSecrets }}
- name: {{ . }}
{{- end }}
{{- end }}
terminationGracePeriodSeconds: {{ .Values.terminationGracePeriodSeconds }}
securityContext:
{{ toYaml .Values.securityContext | indent 10 }}
serviceAccountName: {{ template "rabbitmq-ha.serviceAccountName" . }}
initContainers:
- name: bootstrap
image: {{ .Values.registry }}{{ .Values.busyboxImage.repository}}{{ .Values.arch }}:{{ .Values.busyboxImage.tag}}
imagePullPolicy: {{ .Values.busyboxImage.pullPolicy }}
command: ['sh']
args:
- "-c"
- |
set -ex
cp /configmap/* /etc/rabbitmq
rm -f /var/lib/rabbitmq/.erlang.cookie
{{- if .Values.forceBoot }}
if [ -d "${RABBITMQ_MNESIA_DIR}" ]; then
touch "${RABBITMQ_MNESIA_DIR}/force_load"
fi
{{- end }}
env:
- name: POD_NAME
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.name
- name: RABBITMQ_MNESIA_DIR
value: /var/lib/rabbitmq/mnesia/rabbit@$(POD_NAME).{{ template "rabbitmq-ha.fullname" . }}-discovery.{{ .Release.Namespace }}.svc.{{ .Values.clusterDomain }}
resources:
{{ toYaml .Values.initContainer.resources | indent 12 }}
volumeMounts:
- name: configmap
mountPath: /configmap
- name: config
mountPath: /etc/rabbitmq
- name: {{ .Values.persistence.name }}
mountPath: /var/lib/rabbitmq

最新文章

  1. CentOS安装运行NodeJS框架Express
  2. 简单的cookie使用
  3. (转)FTP操作类,从FTP下载文件
  4. 虚拟机Linux----Ubuntu1204----root登录设置
  5. 修改radio、checkbox、select默认样式的方法
  6. [jobdu]树中两个结点的最低公共祖先
  7. ZooKeeper系列之八:ZooKeeper的简单操作
  8. yum 安装 5.6
  9. JavaScript知识(一)
  10. Android Studio does not point to a valid jvm
  11. 01快速入门-04-Map、Set和iterable(ES6)
  12. pycharm License server激活
  13. 曾经觉得学习晦涩难懂的我是如何爱上linux的
  14. SQL Server的一个不显眼的功能 备份文件的分割
  15. MySQL压力测试(1)-mysqlslap
  16. 转--HC05-两个蓝牙模块间的通信
  17. Python自动化开发 - 生成器、迭代器
  18. mongodb的学习笔记一(集合和文档的增删改查)
  19. EditPlus详解
  20. Java 通过先序中序序列生成二叉树

热门文章

  1. hdfs操作命令
  2. 一步步分析Java深拷贝的两种方式-clone和序列化
  3. Unstanding LSTM
  4. 搭建IIS CA DC Exchange TMG SQL (CA DC篇)
  5. Java.lang 包 util 包等各个包详解
  6. shell中变量的测试与替换
  7. hdu 2871 Memory Control (区间合并 连续段的起始位置 点所属段的左右端点)
  8. scrapy-redis数据去重与分布式框架
  9. IDEA插件之alibaba编程规范
  10. 虚拟机(VM)安装openwrt-koolshare软路由