【问题标题】:How to enable theme on WordPress on Docker如何在 Docker 上的 WordPress 上启用主题
【发布时间】:2017-09-04 16:23:30
【问题描述】:

我正在使用 docker 为几个 wordpress 主题/插件运行开发环境。但是,我不知道如何在容器创建时自动启用我的主题。通常我会为此使用 wp-cli。我创建了一个扩展官方 wordpress 图像的自定义图像,但我无法弄清楚如何在 /var/www/html 文件夹获取设置后运行 wp-cli 命令(我认为这是由 wordpress 图像创建的入口点脚本)。如果我将命令放在 dockerfile 中的“RUN”命令中,则命令将失败,因为 /var/www/html 目录为空。但是,如果我在设置后连接到容器,则会填充目录,并且 wp-cli 可以正常工作。如何在运行父映像的 entrypoint.sh 后运行命令?

这是我的 dockerfile 的内容(不起作用):

FROM wordpress
MAINTAINER Me!
COPY docker-install/wp-cli.phar /usr/local/bin/wp
WORKDIR /var/www/html
RUN chmod u+x /usr/local/bin/wp
RUN /usr/local/bin/wp core install --title="Test WP Site" --admin_user=admin --admin_password=something --admin_email=my@cool.email  --url=localhost:8080 --allow-root
RUN /usr/local/bin/wp theme activate mytheme --allow-root

【问题讨论】:

  • 您需要使用自定义入口点脚本。 ENTRYPOINTCMD 是运行时指令,因此您放入 Dockerfile(构建时)的任何内容都将首先运行。

标签: wordpress docker dockerfile wp-cli


【解决方案1】:

简短的回答:你不能。 ENTRYPOINTCMD 用于 Docker 容器运行时,而不是构建时。在这种情况下,Wordpress 环境实际上是在容器运行时启动的,因此您无法在构建期间与其交互。

长答案:您也许可以通过使用 Docker Compose 创建两个服务来帮助实现您的目标,一个用于 Wordpress,另一个用于 Wordpress CLI 变体(请参阅https://hub.docker.com/_/wordpress/ 上的cli 标签)和 @ 987654325@第一个。然后,您可以使用docker-compose run cli-service wp-cli command 来运行您的命令。

【讨论】:

    【解决方案2】:

    我创建了一个 prepare.sh 文件,其中包含我想在 Apache 启动之前运行的命令,然后将其添加到 Dockerfile:

    COPY ./prepare.sh /prepare.sh
    RUN chmod +x /prepare.sh
    CMD /prepare.sh && apache2-foreground
    

    【讨论】:

    • 你试过这个脚本吗?如果您查看原始 docker-entrypoint.sh github.com/docker-library/wordpress/blob/… 检查 de CMD 是否以 apache2 开头,但此覆盖的脚本没有
    • 感谢您指出这一点!我已经尝试过了,它有效。那条线的目的是什么?
    【解决方案3】:

    您应该创建一个在 docker-entrypoint 之后安装主题的脚本。该名称必须以 apache2 开头(docker-entrypoint 检查 CMD 参数的名称 https://github.com/docker-library/wordpress/blob/0a5405cca8daf0338cf32dc7be26f4df5405cfb6/php5.6/apache/docker-entrypoint.sh#L26),例如 apache2-setup-wordpress.sh。

    Dockerfile 会是这样的

    FROM wordpress:4.7.3
    
    COPY apache2-setup-wordpress.sh /usr/local/bin
    RUN chmod +x /usr/local/bin/apache2-setup-wordpress.sh
    ENTRYPOINT ["docker-entrypoint.sh"]
    CMD ["apache2-setup-wordpress.sh", "apache2-foreground"]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-25
      • 2014-09-21
      • 1970-01-01
      • 2019-09-29
      • 1970-01-01
      • 1970-01-01
      • 2017-10-03
      • 1970-01-01
      相关资源
      最近更新 更多