1

我正在使用 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
4

3 回答 3

1

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

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

于 2017-04-10T00:19:00.077 回答
0

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

COPY ./prepare.sh /prepare.sh
RUN chmod +x /prepare.sh
CMD /prepare.sh && apache2-foreground
于 2017-07-25T21:14:46.317 回答
0

您应该创建一个在 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"]
于 2017-07-27T07:47:58.840 回答