代码之家  ›  专栏  ›  技术社区  ›  Keith John Hutchison

如何在构建过程中激活docker映像中的WordPress插件?

  •  1
  • Keith John Hutchison  · 技术社区  · 6 年前

    我正在寻找如何在构建过程中通过Dockerfile运行命令激活WordPress插件。

    # activate plugins
    RUN wp plugin activate wp-discourse-export --allow-root --path=/var/www/html
    

    我得到的错误是

    Step 10/10 : RUN wp plugin activate wp-discourse-export --allow-root --path=/var/www/html
    ---> Running in c5dac3f62c4c
    Error: This does not seem to be a WordPress install.
    Pass --path=`path/to/wordpress` or run `wp core download`.
    ERROR: Service 'wordpress' failed to build: The command '/bin/sh -c wp plugin 
    activate wp-discourse-export --allow-root --path=/var/www/html' returned a non-zero code: 1
    

    如果我禁用该RUN命令,构建映像,启动docker映像,登录到创建并运行的docker映像

    wp plugin activate wp-discourse-export --allow-root --path=/var/www/html
    Plugin 'wp-discourse-export' activated.
    Success: Activated 1 of 1 plugins.
    

    激活成功。

    如何在构建过程中激活docker映像中的WordPress插件?

    更新:

    我正在通过将脚本复制到图像,然后稍后从主机运行来解决这个问题。

    在Dockerfile中。

    # activate plugins
    COPY activate-wordpress-plugins.sh /usr/local/bin/
    RUN chmod +x /usr/local/bin/activate-wordpress-plugins.sh
    

    在docker编写之后,我运行此命令一次。

    docker exec -it wordpress_1_7522c9dae310 /usr/local/bin/activate-wordpress-plugins.sh
    

    更新2

    我创建了一个脚本来启动实例,然后运行该脚本。

    #!/usr/bin/env bash
    
    echo docker-compose up -d
    docker-compose up -d
    
    echo docker exec -it $(docker-compose ps -q wordpress)  /usr/local/bin/activate-wordpress-plugins.sh
    docker exec -it $(docker-compose ps -q wordpress)   /usr/local/bin/activate-wordpress-plugins.sh
    
    2 回复  |  直到 6 年前
        1
  •  3
  •   Rodrigo Murillo    6 年前

    我认为问题在于WordPress插件激活要求WordPress安装是实时的,并且具有有效的db连接。在映像构建期间,还没有实例化该环境。构建映像与在容器中运行该映像不同。

    激活插件的适当时间是在启动时,正如您所建议的,当容器实例化时。

        2
  •  1
  •   Viet Long Nguyen    6 年前

    Wordpress确实有一个名为mu插件的特殊目录。只要把你的插件放在那里就行了。 https://codex.wordpress.org/Must_Use_Plugins

    WordPress只在mu插件目录中查找PHP文件。您可能希望在mu插件目录中创建一个代理PHP加载程序文件

    • 始终启用,无需通过管理员启用,用户不能意外禁用。
    • 只需将文件上传到mu plugins目录即可启用,无需登录。
    • 由PHP按字母顺序在普通插件之前加载,这意味着在mu插件中添加的API挂钩适用于所有其他插件,即使它们在全局命名空间中运行挂钩函数