具有使用Dockerfile的预安装插件的WordPress映像

时间:2019-06-13 08:50:37

标签: wordpress docker plugins dockerfile

将插件文件夹复制到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/

无法预安装插件

1 个答案:

答案 0 :(得分: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服务中删除卷声明,然后您应该可以看到您的插件文件夹。

我建议您为wp服务使用wordpress:php7.1-apache并以与安装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