gpt4 book ai didi

docker - 如何在kubernetes上运行docker-compose.yaml?

转载 作者:行者123 更新时间:2023-12-02 12:04:23 29 4
gpt4 key购买 nike

我的docker-compose文件由tomcat7服务器和mysql数据库组成


version: '3'
services:
mysql:
image: suji165475/vignesh:latest
ports:
- "3066:3066"

tomcat:
image: suji165475/vignesh:tomcatserver
container_name: tomcat7hope
ports:
- "8080:8080"


我使用docker文件构建了图像
FROM mysql
ENV MYSQL_ROOT_PASSWORD=root
ADD init.sql /docker-entrypoint-initdb.d
FROM picoded/tomcat7
COPY data-core-0.0.1-SNAPSHOT.war /usr/local/tomcat/webapps/data-core-0.0.1-SNAPSHOT.war


如何在kubernetes集群上运行它?我已经尝试过kompose convert并且war文件不会在tomcats应用程序管理器中启动。但是war文件使用docker-compose up成功启动了。

为什么我只能在kubernetes中而不是直接运行docker-compose up时才遇到此问题。请告诉我应该对kubernetes yaml文件进行哪些更改,以帮助我。

mysql-deployment.yaml
 apiVersion: extensions/v1beta1
kind: Deployment
metadata:
annotations:
kompose.cmd: kompose convert
kompose.version: 1.18.0 (06a2e56)
creationTimestamp: null
labels:
io.kompose.service: mysql
name: mysql
spec:
replicas: 1
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
io.kompose.service: mysql
spec:
containers:
- image: suji165475/vignesh:latest
name: mysql
ports:
- containerPort: 3066
resources: {}
restartPolicy: Always
status: {}

tomcat-deployment.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
annotations:
kompose.cmd: kompose convert
kompose.version: 1.18.0 (06a2e56)
creationTimestamp: null
labels:
io.kompose.service: tomcat
name: tomcat
spec:
replicas: 1
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
io.kompose.service: tomcat
spec:
containers:
- image: suji165475/vignesh:tomcatserver
name: tomcat7hope
ports:
- containerPort: 8080
resources: {}
restartPolicy: Always
status: {}

mysql-service.yaml
apiVersion: v1
kind: Service
metadata:
annotations:
kompose.cmd: kompose convert
kompose.version: 1.18.0 (06a2e56)
creationTimestamp: null
labels:
io.kompose.service: mysql
name: mysql
spec:
ports:
- name: "3066"
port: 3066
targetPort: 3066
selector:
io.kompose.service: mysql
status:
loadBalancer: {}

tomcat-service.yaml
apiVersion: v1
kind: Service
metadata:
annotations:
kompose.cmd: kompose convert
kompose.version: 1.18.0 (06a2e56)
creationTimestamp: null
labels:
io.kompose.service: tomcat
name: tomcat
spec:
ports:
- name: "8080"
port: 8080
targetPort: 8080
selector:
io.kompose.service: tomcat
status:
loadBalancer: {}

最佳答案

让我说清楚,您不能在Kubernetes上“运行docker-compose”。如果您想这样做,则不应使用Kubernetes。

话虽如此,使用kompose并不是一个好主意。 Docker撰写的Yaml文件都不同,而kompose只是猜测相关的Kubernetes list 是什么样子。如果您的应用程序非常简单并且很幸运,kompose可能会为您准备好要部署的 list ,但是通常情况并非如此。

某些原因可能对您不起作用:

  • 您的tomcat应用程序未正确引用您的mysql服务
  • 您的mysql部署缺少一些变量或已挂载的卷/文件

  • 您的 tomcat应用程序可以通过 mysql引用 mysql:3066数据库,并且您可能需要在 tomcat部署中添加一些环境变量,例如数据库名称,数据库用户名和数据库密码以进行身份​​验证。这是您编辑的 tomcat list :

    deployment.yaml
    apiVersion: extensions/v1beta1
    kind: Deployment
    metadata:
    name: tomcat
    namespace: default
    labels:
    app: tomcat
    spec:
    replicas: 1
    selector:
    matchLabels:
    app: tomcat
    template:
    metadata:
    labels:
    app: tomcat
    spec:
    containers:
    - image: suji165475/vignesh:tomcatserver
    name: tomcat7hope
    ports:
    - containerPort: 8080

    service.yaml
    apiVersion: v1
    kind: Service
    metadata:
    name: tomcat
    namespace: default
    labels:
    app: tomcat
    spec:
    ports:
    - name: "8080"
    port: 8080
    targetPort: 8080
    selector:
    app: tomcat

    您的 mysql部署可能需要 PersistentVolumeClaimemptyDir才能保留数据。查看附加的卷,并确认您没有丢失任何需要的卷安装或环境变量。这是您编辑的 mysql list :

    deployment.yaml
    apiVersion: extensions/v1beta1
    kind: Deployment
    metadata:
    name: mysql
    namespace: default
    labels:
    app: mysql
    spec:
    replicas: 1
    selector:
    matchLabels:
    app: mysql
    template:
    metadata:
    labels:
    app: mysql
    spec:
    containers:
    - image: suji165475/vignesh:latest
    name: mysql
    ports:
    - containerPort: 3066
    env:
    - name: MYSQL_ROOT_PASSWORD
    value: root

    service.yaml
    apiVersion: v1
    kind: Service
    metadata:
    name: mysql
    namespace: default
    labels:
    app: mysql
    spec:
    ports:
    - name: "3066"
    port: 3066
    targetPort: 3066
    selector:
    app: mysql

    关于docker - 如何在kubernetes上运行docker-compose.yaml?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56026935/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com