首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将Docker WordPress文件从initContainer复制到Kubernetes的emptyDir中?

如何将Docker WordPress文件从initContainer复制到Kubernetes的emptyDir中?
EN

Stack Overflow用户
提问于 2020-09-23 08:31:07
回答 2查看 412关注 0票数 2

我正在尝试将最终的WordPress文件从官方的WordPress Docker镜像从initContainer复制到emptyDir卷。我希望emptyDir卷包含整个WordPress安装,这样我就可以在容器之间共享它。相反,我只得到了没有内容的wp-contents文件夹。不会复制任何其他文件或文件夹。

检查完WordPress Dockerfile and entrypoint后,我怀疑入口点没有执行,因为Dockerfile包含在/var/www/html中创建wp-content文件夹的指令,但似乎没有执行入口点中的任何内容。

我曾尝试将args:更改为args: ["sh", "-c", "sleep 60 && cp -r /var/www/html/. /shared-wordpress"],希望在我运行cp命令之前,容器只需要一些时间来完成通过入口点的运行,但这没有任何效果。如果在运行的wordpress容器中检查/shared-wordpress挂载,它只显示wp-content文件夹。

/usr/src/wordpress复制WordPress文件非常有效,只是它不包含生成的wp-config.php文件。我需要所有的WordPress文件以及生成的wp-config.php文件。

代码语言:javascript
复制
apiVersion: apps/v1
kind: Deployment
metadata:
  name: wordpress
  labels:
    app: wordpress
spec:
  selector:
    matchLabels:
      app: wordpress
  template:
    metadata:
      labels:
        app: wordpress
    spec:
      containers:
      - name: wordpress
        image: wordpress:5.5.1-php7.4-fpm-alpine
        volumeMounts:
        - name: shared-wordpress
          mountPath: /shared-wordpress
      initContainers:
      - name: init-wordpress
        image: wordpress:5.5.1-php7.4-fpm-alpine
        env:
        - name: WORDPRESS_DB_HOST
          value: test_host
        - name: WORDPRESS_DB_USER
          value: root
        - name: WORDPRESS_DB_PASSWORD
          value: hw8djdl21ds
        - name: WORDPRESS_DB_NAME
          value: local_wordpress
        - name: WORDPRESS_DEBUG
          value: "1"
        - name: WORDPRESS_CONFIG_EXTRA
          value: "define( 'FS_METHOD', 'direct' );"
        args: ["/bin/sh", "-c", "cp -r /var/www/html/. /shared-wordpress"]
        volumeMounts:
        - name: shared-wordpress
          mountPath: /shared-wordpress
      volumes:
      - name: shared-wordpress
        emptyDir: {}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-09-23 22:07:57

您的数据未被复制,因为您的docker cmd已被args yaml字段覆盖。

Docker entrypoint exec需要将php-fpm作为另一个参数传递,以便触发生成word press文件的代码。

经过一些测试后,我找到了一种方法来解决您的问题。这是一种比解决方案更好的变通方法,但它解决了您的问题。

因此,要触发代码生成,必须将第一个参数设置为php-fpm。在下面的示例中,我使用了-v参数,这样程序就可以立即存在。如果你不传递任何参数,它将启动并阻止init容器退出。

代码语言:javascript
复制
initContainers:  
- args:  
   - php-fpm  
   - -v

现在,最后一部分是要解决复制文件的问题。我已经删除了cp参数并将EmptyDir挂载到/var/www/html中。现在,文件将直接生成到所需的卷中,因此不需要在以后复制这些文件。

代码语言:javascript
复制
 initContainers:
   volumeMounts:
    - name: shared-wordpress
      mountPath: /var/www/html
票数 1
EN

Stack Overflow用户

发布于 2020-09-23 14:23:01

如果您需要Configure a Pod Initialization,请检查文档示例中所示的命令格式在应用于您的情况时是否有用:

代码语言:javascript
复制
command:
    - cp
    - "-r"
    - "/var/www/html/."
    - "/shared-wordpress"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64019397

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档