如何使用 Dockerfile 将本地 wp-content 文件复制到 Wordpress 容器

leo*_*ape 6 wordpress docker dockerfile

我有一个 Wordpress 容器,我想在启动时将本地文件夹(带有文件)复制到其中

我的文件夹中有本地文件:

/html/wp-content/plugins
/html/wp-content/themes
/html/wp-content/uploads
Run Code Online (Sandbox Code Playgroud)

我有一个 Dockerfile:

FROM wordpress

COPY ./html/wp-content/plugins/ /var/www/html/wp-content/plugins
COPY ./html/wp-content/themes/ /var/www/html/wp-content/themes
COPY ./html/wp-content/uploads/ /var/www/html/wp-content/uploads

ENTRYPOINT ["docker-entrypoint.sh"]
CMD ["apache2-foreground"]
Run Code Online (Sandbox Code Playgroud)

尽管复制成功(构建通过),但文件未显示在这些目标文件夹中。

如果我将目标文件夹更改为 /html 之前的任何路径,例如,如果我将目标设置为 /var 或 /var/www,则文件将被复制,我可以在容器中看到它们。

我在这里查看了这篇旧文章,其中提到 /html 文件夹实际上在启动时作为卷安装,因此我需要先将文件复制到此文件夹中

/usr/src/wordpress/wp-content
Run Code Online (Sandbox Code Playgroud)

然后在启动时这些文件夹将自动复制到 /var/www/html/wp-content/ 。(这可以解释为什么直接复制似乎不起作用)

我也尝试过,虽然我的本地文件夹确实被复制到这些文件夹中(我可以在容器中看到它们),但它们在启动时不会复制到 /var/www/html/content !

  1. 是否可以通过dockerfile将本地文件直接复制到/var/www/html文件夹中?
  2. 如果没有,如何确保在复制到 /usr/src/wordpress/wp-content 时,文件夹将在启动时复制到 /var/www/html/wp-content/ ?

(我浏览过的一些帖子不起作用,因为这似乎是 WordPress 特有的,而不是 Dockerfile COPY 本身:)

Dockerfile 复制保留子目录结构 Docker 不会将子目录复制到容器中 如何从 Dockerfile 将文件夹复制到 docker 映像? https://www.serverlab.ca/tutorials/containers/docker/how-to-host-your-wordpress-site-with-docker/ Wordpress docker 将主题复制到公开的文件夹中

小智 0

今天我遇到了同样的问题。我想在使用 COPY 构建图像时添加主题。然而,这并没有奏效。这是因为我已经将 wp-content 文件夹设置为卷。看来您无法复制到卷中。

以下链接中的讨论帮助我认识到了这一点:

https://github.com/docker-library/wordpress/issues/146

下面我添加了我的 WordPres Dockerfile 和 docker-compose 文件。注释掉卷后,一切都按预期进行。

我当然希望两年后你不再需要它了,哈哈。

参考: https: //docs.docker.com/samples/wordpress/

Dockerfile

FROM wordpress:latest

WORKDIR /var/www/html

COPY ./wp-content/ ./wp-content/
RUN chmod -R 755 ./wp-content/


Run Code Online (Sandbox Code Playgroud)

docker-compose.yml

FROM wordpress:latest

WORKDIR /var/www/html

COPY ./wp-content/ ./wp-content/
RUN chmod -R 755 ./wp-content/


Run Code Online (Sandbox Code Playgroud)