Wordpress docker скопировать тему в открытую папку - PullRequest
0 голосов
/ 07 февраля 2020

Я пытаюсь создать тему WordPress с docker & docker -compose. У меня проблема в том, что я пытаюсь скопировать мою тему в открытую папку wp-content docker, но по какой-то причине он говорит, что такого файла или каталога нет.

При запуске команды 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, она ничего не показывает, поэтому мой вопрос, есть ли способ скопировать тему в папку wp-content после того, как docker compose завершится ??

1 Ответ

1 голос
/ 07 февраля 2020

В вашем файле Docker вы не устанавливаете WORKDIR, поэтому ваша команда COPY относится к root (/). Поэтому он копирует вашу тему в /wp-content/themes.

Перед командой COPY вы можете установить:

WORKDIR /var/www/html

Это исправит ваш файл Dockerfile. И вы отправите изображение с темой уже внутри.

Однако

Вы уже сопоставляете локальную копию wp-содержимого в томе. Так что если вы просто разместите свою тему в правильном месте на вашем хосте (внутри ./wp-content/themes), тогда она будет подхвачена docker -compose. В этот момент вам больше не нужна команда COPY в Dockerfile.

...