【问题标题】:How to use a wordpress container with a wp-cli container when /var/www/html is already mounted in the host?当 /var/www/html 已经安装在主机中时,如何将 wordpress 容器与 wp-cli 容器一起使用?
【发布时间】:2020-04-01 13:04:15
【问题描述】:

我尝试使用网络,但找不到文件夹名称与“_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

在我的docker-compose.ymlwpcli 部分中,我遇到了同样的错误。

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

我见过this file,但我觉得它对我的情况没有帮助。

更新 2

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

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

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

【问题讨论】:

  • 一个仅用于 WP-CLI 的额外容器?
  • @leymannx 我已将Update 2 部分添加到问题中。谢谢。

标签: wordpress docker docker-compose docker-network wp-cli


【解决方案1】:

我在您的 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:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-20
    • 2018-03-31
    • 2018-12-08
    • 1970-01-01
    • 2013-03-19
    • 2017-09-26
    相关资源
    最近更新 更多