首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Docker组合执行插件安装的WP-CLI命令

使用Docker组合执行插件安装的WP-CLI命令
EN

Stack Overflow用户
提问于 2019-07-21 19:03:59
回答 1查看 941关注 0票数 2

简介:

我正在尝试运行一些WP-CLI命令来进行维护,作为我在生产站点上发布过程的一部分。我可以成功地对下面的docker-compose文件执行以下命令。

  • docker-compose run wp-cli_collinmbarrett-com core update
  • docker-compose run wp-cli_collinmbarrett-com plugin update --all
  • docker-compose run wp-cli_collinmbarrett-com theme update --all
  • docker-compose run wp-cli_collinmbarrett-com db optimize

我在站点上安装了一个插件(可湿性粉剂),它添加了自己的WP-CLI命令。当我尝试运行这个命令时,它失败了

代码语言:javascript
复制
docker-compose run wp-cli_collinmbarrett-com sweep --all
/usr/local/bin/docker-entrypoint.sh: exec: line 15: sweep: not found

在非坞化的设置中,我已经验证了WP-CLI的WP-扫描命令是成功的.

问题:

如何在带有Docker的容器化环境中运行插件安装的WP-CLI命令?我是否需要让WP-CLI容器知道所安装的插件,而不是共享卷?

我的docker-compose.yml**:**

代码语言:javascript
复制
version: "3.7"

services:
  wp_collinmbarrett-com:
    image: wordpress:fpm-alpine
    restart: always
    networks:
      - reverse-proxy
      - collinmbarrett-com
    depends_on:
      - mariadb_collinmbarrett-com
    volumes:
      - collinmbarrett-com_files:/var/www/html

  mariadb_collinmbarrett-com:
    image: mariadb:latest
    restart: always
    networks:
      - collinmbarrett-com
    volumes:
      - collinmbarrett-com_data:/var/lib/mysql

  wp-cli_collinmbarrett-com:
    image: wordpress:cli
    networks:
      - collinmbarrett-com
    volumes:
      - collinmbarrett-com_files:/var/www/html

networks:
  reverse-proxy:
    external:
      name: wp-host_reverse-proxy
  collinmbarrett-com:

volumes:
  collinmbarrett-com_files:
  collinmbarrett-com_data:

GitHub上的完整配置。

EN

回答 1

Stack Overflow用户

发布于 2022-02-16 12:31:34

不直接响应您的命令需求(我还没有尝试),但我想与您分享我正在使用的所有配置,希望它能帮助您。

我的docker-compose.yml有:

代码语言:javascript
复制
services:
...
  # Mysql container
  db:
...
  # Wordpress container
  wp:  
...
  wpcli:
    image: wordpress:cli
    user: "33:33"
    volumes:
      # necessary to write to the filesys
      - ./php-config/phar.ini:/usr/local/etc/php/conf.d/phar.ini
      - wp_app:/var/www/html
      - /tmp/wp-temp:/tmp/wp-temp
    environment:
      HOME: /tmp/wp-temp
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: $WORDPRESS_DB_USER
      WORDPRESS_DB_PASSWORD: $WORDPRESS_DB_PASSWORD
      WORDPRESS_DB_NAME: $WORDPRESS_DB_NAME
    depends_on:
      - db
      - wp
volumes:
  wp_app: {}
...

请注意,正如在上提到的,在/wordpress中作为任意用户运行的部分

当通过这个映像的cli变体运行WP-CLI时,需要注意的是,它们是基于阿尔卑斯的,并且有一个默认用户使用阿尔卑斯的www-data,其UID为82 (与基于Debian的WordPress变体的默认有效UID为33相比),所以当对现有的基于Debian的WordPress安装运行cli时,类似-用户33:33可能是必要的(可能还有-e HOME=/tmp (取决于调用的wp命令)以及它是否尝试使用~/wp-cli)。

您需要将WP-CLI用户定义为具有用户id和组id = 33的www-数据。这就是我定义user: "33:33"的原因。此外,该命令可能需要下载临时内容,因此我定义了一个HOME环境设置。还请注意,主机HOME 中的映射也应该与用户33:33所有权in一起分配,否则WP无法写入文件。

而且,WPCLI映像中的PHP.ini将phar.readonly设置为On,因此需要重写它。我添加了一个特定的./php-config/phar.ini文件,其中包含了该覆盖:

代码语言:javascript
复制
phar.readonly = Off

为了执行插件安装,我会在我的docker-compose.yml文件夹上执行以下命令:

代码语言:javascript
复制
docker-compose run --rm wpcli plugin install wp-mail-smtp  --force --allow-root

请注意,--force --allow-root是可选的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57136171

复制
相关文章

相似问题

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