我知道最好为 mysql 和 tomcat 使用单独的容器并在部署它们之前链接它们,但是因为我想使用 kubectl(kubernetes)来部署它们,所以如果在同一个容器上完成会更容易,并且可以使用 kubernetes 的部署和服务 yaml 文件轻松部署。
我必须对我的 docker 文件和 yaml 文件进行哪些更改才能使 tomcat 与 sql 数据库交互?
Dockerfile
FROM tomcat
COPY data-core-test.war /usr/local/tomcat/webapps/
部署.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: tomcat-pod
spec:
selector:
matchLabels:
run: tomcat-pod
replicas: 1
template:
metadata:
labels:
run: tomcat-pod
spec:
containers:
- name: tomcat
image: tomcat:warfile
ports:
- containerPort: 8080
服务.yaml
apiVersion: v1
kind: Service
metadata:
name: tomcat-pod
labels:
run: tomcat-pod
spec:
type: NodePort
ports:
- port: 8080
targetPort: 8080
selector:
run: tomcat-pod
答案1
您会发现从长远来看,在一个容器内管理多个进程可能会很麻烦。此外... Kubernetes 允许您在一个 Pod 中运行多个容器。
应用程序进程将大部分被隔离,但它们确实共享相同的网络接口 —— 这意味着,在 Pod 内部,所有容器都可以作为localhost
或进行访问127.0.0.1
。
Pod 内的容器被视为一个单元。它们将始终被调度在同一主机上,并按照 Pod 的生命周期同时重启。