一般都是一个 pod 里面包含一个容器,但是有些情况,多个容器之间有比较亲密的关系,需要通过共享目录或本地 localhost 请求互相通信的话,可以放到一个 pod 里。比如:一个tomcat 的 web 应用,可以把 tomcat 算作一个容器,我们自己的 war 包可以单独做一个镜像,然后通过共享目录挂载到 tomcat 的容器里。这样做的好处是当war包更新时,我们只需更新我们应用的镜像。
apiVersion: v1
kind: Pod
metadata:
name: javaweb-2
spec:
# initContainers 会比 spec.containers 里定义的容器先启动
initContainers:
- image: xxx/sample-war:v1
command: ["cp", "/sample.war", "/app"]
volumeMounts:
- mountPath: /app
name: app-volume
containers:
- image: xxx/tomcat:9.0
name: tomcat
command: ["sh", "-c", "/root/apache-tomcat/bin/start.sh"]
volumeMounts:
- mountPath: /root/apache-tomcat/webapps
name: app-volume
ports:
- containerPort: 8080
hostPort: 8001
volumes:
- name: app-volume
emptyDir: {}
注:这里的第一个 image 改成自己的包含 war 包的镜像,第二个 image 改成实际的tomcat 的镜像