【问题标题】:Wordpress docker copy theme into exposed folderWordpress docker 将主题复制到公开文件夹中
【发布时间】:2020-02-07 00:21:18
【问题描述】:

我正在尝试使用 docker 和 docker-compose 构建 wordpress 主题。我遇到的问题是我试图将我的主题复制到 docker 的暴露 wp-content 文件夹中,但由于某种原因它说没有这样的文件或目录。

运行 ls 命令我的文件夹结构如下:

wp-content // available only after docker compose finishes
theme
dockerFile
docker-compose.yaml

这是我的 docker-compose.yaml 文件的样子

version: '3'

services:
  # Database
  db:
    image: mysql:5.7
    volumes:
      - db_data:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: wordpress
    networks:
      - wpsite
  # phpmyadmin
  phpmyadmin:
    depends_on:
      - db
    image: phpmyadmin/phpmyadmin
    restart: always
    ports:
      - '8080:80'
    environment:
      PMA_HOST: db
      MYSQL_ROOT_PASSWORD: password 
    networks:
      - wpsite
  # Wordpress
  wordpress:
    build: .
    depends_on:
      - db
    ports:
      - '8000:80'
    restart: always
    volumes:
      - ./wp-content/:/var/www/html/wp-content
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: wordpress
    networks:
      - wpsite
networks:
  wpsite:
volumes:
  db_data:

这里是我的 DockerFile 的样子

FROM wordpress:latest
RUN echo "Install wordpress"
COPY ./giveaway_theme ./wp-content/themes
RUN echo "Copy theme to wp-content folder"

看起来好像我在容器中,因为当我运行 ls 命令时它什么也没显示, 所以我的问题是有什么方法可以在 docker compose 完成后将主题复制到 wp-content 文件夹中??

【问题讨论】:

    标签: wordpress docker docker-compose dockerfile


    【解决方案1】:

    在您的 Docker 文件中,您没有设置 WORKDIR,因此您的 COPY 命令相对于根 (/)。因此它会将您的主题复制到 /wp-content/themes。

    在COPY命令之前可以设置:

    WORKDIR /var/www/html
    

    这将修复您的 Dockerfile。并且您将发送已包含主题的图像。

    然而

    您已经将 wp-content 的本地副本映射到 a 卷。因此,如果您只是将主题放置在主机上的正确位置(在 ./wp-content/themes 内),那么 docker-compose 将拾取它。此时,您不再需要 Dockerfile 中的 COPY 命令了。

    【讨论】:

    • 你是什么意思如果我把它放在 ./wp-content/themes 里面,这个文件夹结构是在 docker-compose 完成后创建的? @Mihai 你能解释一下吗?
    • 当你在 docker-compose up 过程中映射一个卷时,如果它不存在,它将在本地创建它。但如果它存在,它将使用本地主机中的相同内容将其安装在容器中。为了更好地理解,请将您的音量替换为:./theme:/var/www/html/wp-content/themes
    • 非常感谢,会试试看:)
    猜你喜欢
    • 1970-01-01
    • 2016-12-20
    • 1970-01-01
    • 2021-03-01
    • 1970-01-01
    • 2014-03-29
    • 2016-02-28
    • 1970-01-01
    相关资源
    最近更新 更多