需要运行将某些文件复制到安装路径[init-container]

时间:2019-03-27 09:30:03

标签: kubernetes

我将tomcat作为docker映像。 我有3个xmls /属性文件来在雄猫中引发战争 我需要编写初始化容器

  1. 具有脚本[shell或python]
  2. 创建一个卷并将其装入主容器
  3. 将属性文件从本地系统复制到已挂载的文件 音量。
  4. 然后init-container在此之后完成应用程序容器的启动。

例如: 在本地,我有以下内容:

/work-dir tree
├── bootstrap.properties
├── index.html
├── indexing_configuration.xml
├── repository.xml
└── wrapper.sh

init容器应运行脚本wrapper.sh复制这些内容
文件放入应用容器上的挂载卷 这是/usr/share/jack-configs/

1 个答案:

答案 0 :(得分:1)

您必须创建一个卷并将其安装在两个容器上。在Init容器上,运行脚本将文件复制到已安装的卷。

建议您不要使用本地文件,而应使用Blob存储来复制文件,这样会变得更加简单。

This文档显示了如何做自己想做的事。

以下是一个示例YAML:

apiVersion: v1
kind: Pod
metadata:
  name: init-demo
spec:
  containers:
  - name: nginx
    image: nginx
    ports:
    - containerPort: 80
    volumeMounts:
    - name: workdir
      mountPath: /usr/share/nginx/html
  # These containers are run during pod initialization
  initContainers:
  - name: install
    image: busybox
    command:
    - wget
    - "-O"
    - "/work-dir/index.html"
    - http://kubernetes.io
    volumeMounts:
    - name: workdir
      mountPath: "/work-dir"
  dnsPolicy: Default
  volumes:
  - name: workdir
    emptyDir: {}

要完成所需的操作,必须更改init容器中的command才能执行脚本,这一点我让您尝试。

PS:如果您真的要从本地(节点)文件系统复制,则需要将另一个卷挂载到init容器,然后从一个卷复制到另一个卷