【问题标题】:WordPress image with pre-installed plugins using Dockerfile使用 Dockerfile 预装插件的 WordPress 镜像
【发布时间】:2019-06-13 08:50:37
【问题描述】:

将插件文件夹复制到 WordPress 默认图像目录并创建新图像。将其推送到 Docker Hub 上的存储库,然后拉回镜像并运行容器,但未安装插件。在容器中找不到文件夹。

docker-compose.yml

version: '3.3'
services:
  wp:
    image: "arslanliaqat/wordpresswithplugin:1.0"
    volumes:
      - './wordpress:/var/www/html'
    ports:
      - "8000:80"
    environment:
      WORDPRESS_DB_PASSWORD: qwerty
  mysql:
    image: "mysql:5.7"
    environment:
      MYSQL_ROOT_PASSWORD: qwerty
    volumes:  
      - "my-datavolume:/var/lib/mysql"
volumes: 
  my-datavolume:

Dockerfile

FROM wordpress:php7.1-apache

COPY preferred-languages /var/www/html/wp-content/plugins/preferred-languages/

无法预安装插件

【问题讨论】:

    标签: wordpress docker plugins dockerfile


    【解决方案1】:

    所以这就是正在发生的事情:

    在构建自定义图像时,添加插件文件夹 /var/www/html/wp-content/plugins/preferred-languages/ 就可以了。

    您只需运行docker run -it --rm arslanliaqat/wordpresswithplugin shcd /var/www/html/wp-content/plugins 即可对其进行测试,您应该会看到该文件夹​​。

    当您使用 docker-compose.yml 文件时该文件夹丢失的原因是因为您将卷“安装在”已经存在的文件夹上。尝试从 docker-compose.yml 文件中的 wp 服务中删除卷声明,然后您应该能够看到您的插件文件夹。

    我建议您将 wordpress:php7.1-apache 用于您的 wp 服务,并以与安装 wordpress 相同的方式安装您的插件文件夹

    例子:

    version: '3.3'
    services:
      wp:
        image: "wordpress:php7.1-apache"
        volumes:
          - './wordpress:/var/www/html'
          - './preferred-languages:/var/www/html/wp-content/plugins/preferred-languages'
        ports:
          - "8000:80"
        environment:
          WORDPRESS_DB_PASSWORD: qwerty
      mysql:
        image: "mysql:5.7"
        environment:
          MYSQL_ROOT_PASSWORD: qwerty
        volumes:  
          - "my-datavolume:/var/lib/mysql"
    volumes: 
      my-datavolume:
    

    您是否有特定原因需要该插件已在图像中?


    更新

    我创建了一个简单的要点,它应该可以完成您想做的事情。入口点缺少对已经存在的主题/插件目录等的检查,但这应该作为 POC

    https://gist.github.com/karlisabe/16c0ccc52bdf34bee5f201ac7a0c45f7

    【讨论】:

    • 我个人喜欢将我的插件烘焙到我的图像中。这样,如果我被黑了,我可以删除容器并恢复到一个众所周知的版本。缺点是插件升级需要重新构建和重新部署映像。
    • 好吧,您始终可以为您的图像使用自定义入口点脚本,该脚本创建从图像上不同文件夹到插件文件夹的符号链接...如果这听起来像一个选项,我可以添加一个示例答案
    • 我真正想要的是,当我安装 wordpress 时,我的主题、插件会自动安装。
    • 我并不是真正的 WP 开发人员,但据我所知,插件/主题也可以包含数据库更改,所以这意味着您还需要运行一些安装这些的脚本?或者您只需要在必要位置安装插件/主题文件?我想说你可以创建一个简单的 bash 脚本作为图像的入口点,它会在启动时创建一个从主题/插件文件夹到必要的 WP 子文件夹的符号链接
    • @KārlisĀbele 插件文件夹现在可见。但它的内容是空的,它也没有显示在 wordpress 插件表中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-12
    • 2018-04-06
    • 1970-01-01
    • 1970-01-01
    • 2013-10-18
    • 1970-01-01
    • 2014-11-12
    相关资源
    最近更新 更多