一般都是一個 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 的鏡像