【发布时间】:2019-09-27 06:26:59
【问题描述】:
请不要将此标记为重复。我这次做了一些更改。相信我,我已经尝试了其他答案,但它们似乎没有解决我的问题。我无法将 tomcat 容器与我的 MySQL 数据库链接Kubernetes 中的容器。
使用这个 dockerfile 构建我的 tomcat 映像
FROM picoded/tomcat7
COPY data-core-0.0.1-SNAPSHOT.war /usr/local/tomcat/webapps/data-core-0.0.1-SNAPSHOT.war
mysql-service.yaml
apiVersion: v1
kind: Service
metadata:
name: mysql
spec:
ports:
- port: 3306
selector:
app: mysql
mysql-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: mysql
spec:
selector:
matchLabels:
app: mysql
strategy:
type: Recreate
template:
metadata:
labels:
app: mysql
spec:
containers:
- image: mysql:5.6
name: mysql
imagePullPolicy: "IfNotPresent"
env:
- name: MYSQL_ROOT_PASSWORD
value: root
- name: MYSQL_DATABASE
value: data-core
ports:
- containerPort: 3306
name: mysql
volumeMounts:
- name: mysql-persistent-storage
mountPath: /docker-entrypoint-initdb.d //my sql init script will
get copied from hostpath
of persistant volume.
volumes:
- name: mysql-persistent-storage
persistentVolumeClaim:
claimName: mysql-initdb-pv-claim
Tomcat-service.yaml
apiVersion: v1
kind: Service
metadata:
name: tomcat
labels:
app: tomcat
spec:
type: NodePort
ports:
- name: myport
port: 8080
targetPort: 8080
nodePort: 30000
selector:
app: tomcat
tier: frontend
Tomcat-Deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: tomcat
labels:
app: tomcat
spec:
selector:
matchLabels:
app: tomcat
tier: frontend
strategy:
type: Recreate
template:
metadata:
labels:
app: tomcat
tier: frontend
spec:
containers:
- image: suji165475/vignesh:tomcatserver //this is the tomcat image
built using dockerfile with
war file(spring boot app)
copied to webapps folder
name: tomcat
env:
- name: DB_PORT_3306_TCP_ADDR
value: mysql #service name of mysql
- name: DB_ENV_MYSQL_DATABASE
value: data-core
- name: DB_ENV_MYSQL_ROOT_PASSWORD
value: root
ports:
- containerPort: 8080
name: myport
volumeMounts:
- name: tomcat-persistent-storage
mountPath: /var/data
volumes:
- name: tomcat-persistent-storage
persistentVolumeClaim:
claimName: tomcat-pv-claim
我已经指定了所有环境变量,包括连接它们所需的 Tomcat 部署中的 MySQL 服务名称。还确保为两个容器创建持久卷和声明。但是我的 war 文件仍然不会在 Tomcat 的管理器应用程序中启动。
我的 yaml 文件是否正确,还是需要进行一些更改??
注意:我正在使用 putty 终端的服务器上运行。
用于在浏览器中访问我的应用的 URL-
206.189.22.155:30000/data-core-0.0.1-SNAPSHOT
【问题讨论】:
-
你好,查看tomcat容器的日志
kubectl logs -f $TOMCAT_POD -
它说严重:部署 Web 应用程序存档时出错 /usr/local/tomcat/webapps/data-core-0.0.1-SNAPSHOT.war java.lang.IllegalStateException: ContainerBase.addChild: start: org .apache.catalina.LifecycleException: 无法启动组件 [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/data-core-0.0.1-SNAPSHOT]]
-
这是由于通信链路故障
-
是否尝试连接本地主机?
-
你能发布完整的日志吗?你的容器镜像在本地运行吗?
标签: mysql docker tomcat kubernetes