首页 > 解决方案 > 当 /var/www/html 已经安装在主机中时,如何使用带有 wp-cli 容器的 wordpress 容器?

问题描述

我尝试使用网络,但找不到文件夹名称与“_default”连接的网络。

如果我这样指定网络:

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

我得到:

错误:服务“wpcli”使用未定义的网络“A_default”

虽然A_default存在于 的输出中docker network ls

如果我删除该部分:

    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

我希望为 WP-CLI 使用单独的容器,因为命令

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

完成工作后不会删除容器,并且删除--rm使我无法使用它创建的文件,因为我无法访问卷,A_wordpress_1因为临时 WP-CLI 容器具有不同的工作目录。

标签: wordpressdockerdocker-composedocker-networkwp-cli

解决方案


我在您的 docker-compose 文件中看到两个问题:

  1. (已删除)networks部分格式错误
  2. ./html未安装在wpcli服务中

我会尝试以下方法:

version: '3.3'

services:
  db:
    ...
  phpmyadmin:
    ...
  wordpress:
    ...
  wpcli:
    ...
    volumes:
      - type: bind
        source: ./html
        target: /var/www/html
        volume:
          nocopy: true
    ...
volumes:
  db_data:

networks:
  A_default:

推荐阅读