如何在Docker上启用WordPress的主题

我使用docker运行一个开发环境的几个WordPress主题/插件。 但是,我无法弄清楚如何在容器创build时自动启用我的主题。 通常我只是使用wp-cli来做这件事。 我创build了一个扩展官方WordPress图片的自定义图片,但我无法弄清楚如何在/ var / www / html文件夹安装后运行wp-cli命令(我认为这是由wordpress图片创build的入口点脚本)。 如果我将这些命令放在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是在Docker容器运行时使用的,而不是构build时间。 在这种情况下,Wordpress环境实际上是在容器运行时启动的,所以在构build过程中不能与它交互。

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

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

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

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