当前位置: 首页 > 知识库问答 >
问题:

在Kubernetes上使用Wordpress CLI映像

经景辉
2023-03-14

我们有一个基于官方wordpress映像的自定义docker映像,其中包含我们正在开发的自定义主题。我们在这个项目上使用Gitlab CI并在裸机库伯内特斯集群v1.6上部署分支以供审查。它工作正常,但是我们试图通过在部署新实例时自动执行所需的手动操作来增强该过程:

  • 安装Wordpress
    • 设置管理员凭据
    • 设置网站名称和url

    WP-cli拥有所需的所有命令。但是如何将它与容器和K8S一起使用呢?我们知道有两种选择:

    • 在基于WordPress的图像中安装该工具

    有些WordPress映像预装了wp-cli(例如tuum-docker-wordpress),但我们觉得这不是正确的方式。在某个时候,我们希望使用带有cli映像的CronJobs资源每天导出数据,我们正在尝试使该过程尽可能通用,我们希望坚持使用官方映像,因此首选第二种选择。根据我们的研究,为了实现第二个选项,我们需要实现两件事:

    • 从CLI容器访问WordPress安装的文件。
    • 执行成功后不要重试。

    我们研究了几个选项,但没有完全成功:

    • 同一个pod中的第二个容器-看起来可以使用EmptyDir在两个容器之间共享文件,但是即使容器成功,它也会重新启动
    • InitContainer—这听起来很诱人,因为数据库迁移是这样完成的。但是,除非使用自定义图像,否则似乎无法获取文件
    • 作业-它完全是为处理一次性任务而设计的,但是访问pod中容器的文件似乎是不可能的

    当您在Kubernetes上部署Wordpress的review部署时,这似乎是一个非常常见的特性,应该有人已经这样做了。但是我们找不到关于这个用例的任何具体信息。

共有2个答案

宋奇希
2023-03-14

根据@kotsov上面的提示,我们在部署中使用初始化容器完成了这项工作。

步骤:

  • 第一个init容器启动wordpress映像,但args被重写为[“apache2前台”,“-版本”]。这将导致它运行入口点,如有必要,安装/设置wordpress,然后使用版本退出
  • 第二个init容器是wordpress cli及其命令
  • 之后,让wordpress容器再次运行

我们还为/var/www/html在一个持久卷上设置了这些内容,所以如果它再次启动,就不必执行所有这些操作。初始化步骤将根据目录内容跳过初始化步骤。

在部署模板中:

initContainers:
- name: Initialise Wordpress
  image: wordpress: <version>
  args: ["apache2-foreground","-version"]
  env: 
    <your wordpress env>
  volumes:
    <shared volume info>
- name: Wordpress CLI commands
  image: wordpress-cli: <version>
  env: 
    <your wordpress cli env>
  volumes:
    <shared volume info>
containers:
- name: Wordpress
  image: wordpress: <version>
  env: 
    <your wordpress env>
  volumes:
    <shared volume info>
郁隐水
2023-03-14

您可以使用基于NFS的文件系统,并将wordpress内容装载到任何类型的工作负载中。

如果您需要一些帮助,请查看https://matthewdavis.io/highly-available-wordpress-on-kubernetes/.

 类似资料:
  • 我们目前正在使用spring boot和netflix组件建立一个微服务架构,为了部署,我们计划使用aws kubernetes(EKS)设置。我们在选择是使用Netflix在Kubernetes上的Eureka&ribbon服务进行服务发现还是使用Kubernetes自己的服务发现机制时处于两难境地。我看到使用k8s服务发现的优点是水平伸缩变得容易。对此的任何想法都将对我们把它带向正确的方向真的

  • 本文档介绍了如何创建一个简单的 Kubernetes 集群,部署 TiDB Operator,并使用 TiDB Operator 部署 TiDB 集群。 警告: 本文中部署例子仅用于测试目的。不要直接用于生产环境。 基本步骤如下: 创建 Kubernetes 集群 本节介绍了两种创建简单 Kubernetes 集群的方法,可用于测试在 TiDB Operator 下运行的 TiDB 集群。选择最适

  • 问题内容: 我正在努力让Kubernetes与我的私有hub.docker.com注册表映像一起使用。 我正在使用kubectl版本: 和Mac OS X上的Vagrant 我按照此处给出的说明进行操作:https : //github.com/kubernetes/kubernetes/blob/release-1.1/docs/user- guide/images.md#pre-pulling

  • 这是org.csanchez.jenkins.plugins.Kubernetes日志。我已经上传到wetransfer->we.tl/t-zisbftkzrk 我已经读过很多关于这个问题的文章,并且已经用这个JAVA_OPTS配置了jenkins,但是问题没有得到解决。 Kubernetes插件配置有: null

  • 我需要一些上传图像的帮助。 我有两个不同的申请 在我的专用服务器上运行的Springstart应用程序 Angulal-6 Application-在我的云服务器上运行 我需要从我的spring boot应用程序上传一个图像到Angular-6资产文件夹(资产文件夹类似于spring boot应用程序的资源文件夹) 在application.properties我已经声明上传位置,如profile

  • 我尝试使用minikube从本地docker镜像和docker hub部署kubernetes。但两者都不起作用。 方法1:使用保存和加载tar文件,创建了图像,它可用于kubectl。 执行以下命令以创建部署: 从kubectl描述pod命令, 方法2:我将映像推送到我的docker hub存储库(https://hub.docker.com/r/get2arun/elk/tags),然后在终端