Как использовать контейнер WordPress с контейнером wp-cli, когда / var / www/html уже смонтирован на хосте? - PullRequest
0 голосов
/ 01 апреля 2020

Я пытался использовать сети, но сеть с именем папки, объединенным с "_default", не найдена.

Если указать сеть следующим образом:

  wpcli:
    container_name: ...
    image: wordpress:cli
    working_dir: /var/www/html
    depends_on:
      - db
      - wordpress
    networks:
      - A_default

Я получу:

ОШИБКА : служба "wpcli" использует неопределенную сеть "A_default"

, хотя на выходе docker network ls существует A_default.

Если я удаляю деталь:

    networks:
      - A_default

Я получаю эту ошибку:

wpcli_1 | Ошибка: это не похоже на установку WordPress.

wpcli_1 | Передайте --path = path/to/wordpress или запустите wp core download.

A_wpcli_1 с кодом 1

и только эту ошибку на выходе docker-compose up .

Если я использую

    volumes:
      - /var/www/html

внутри секции wpcli моего docker-compose.yml, я получаю ту же ошибку.

docker-compose.yml

Ниже мой docker-compose.yml с разумной информацией заменен на ...:

version: '3.3'

services:
  db:
    container_name: A_db_1
    image: mysql:5.7
    volumes:
      - db_data:/var/lib/mysql
    restart: "no"
    environment:
      MYSQL_DATABASE: '...'
      MYSQL_USER: '...'
      MYSQL_PASSWORD: '...'
      MYSQL_ROOT_PASSWORD: ...

  phpmyadmin:
    container_name: A_phpmyadmin_1
    depends_on:
      - db
    restart: "no"
    ports:
      - "8080:80"
    image: phpmyadmin/phpmyadmin
    environment:
      PMA_HOST: db:3306
      PMA_USER: root
      PMA_PORT: 3306
      PMA_PASSWORD: ...

  wordpress:
    container_name: A_wordpress_1
    depends_on:
      - db
    image: wordpress:latest
    ports:
      - "80:80"
    volumes:
      - type: bind
        source: ./html
        target: /var/www/html
        volume:
          nocopy: true
    restart: "no"
    environment:
      WORDPRESS_DB_NAME: '...'
      WORDPRESS_DB_USER: '...'
      WORDPRESS_DB_PASSWORD: '...'
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_TABLE_PREFIX: 'wp_'
      WORDPRESS_AUTH_KEY: '...'
      WORDPRESS_SECURE_AUTH_KEY: '...'
      WORDPRESS_LOGGED_IN_KEY: '...'
      WORDPRESS_NONCE_KEY: '...'
      WORDPRESS_AUTH_SALT: '...'
      WORDPRESS_SECURE_AUTH_SALT: '...'
      WORDPRESS_LOGGED_IN_SALT: '...'
      WORDPRESS_NONCE_SALT: '...'

  wpcli:
    container_name: A_wpcli_1
    image: wordpress:cli
    working_dir: /var/www/html
    depends_on:
      - db
      - wordpress
    networks:
      - A_default

volumes:
  db_data:

Спасибо.

Обновление 1

Я видел этот файл но я не нахожу это полезным в моей ситуации.

Обновление 2

Я хочу sh использовать отдельный контейнер только для WP-CLI, потому что команда

docker run -it --rm \
    --volumes-from A_wordpress_1 \
    --network A_default wordpress:cli \
    $*

не удаляет контейнер после того, как он выполнил свою работу, а удаление --rm лишает меня возможности работать с файлами, которые он создал, потому что я не могу получить доступ к томам A_wordpress_1, потому что временный контейнер WP-CLI имеет другой рабочий каталог.

...