【问题标题】:Wordpress wp-config.php doesn't update in Dockers?Wordpress wp-config.php 不会在 Dockers 中更新?
【发布时间】:2018-01-15 13:42:49
【问题描述】:

我正在使用 Wordpress 和 docker 容器。问题是我更新了 wp-config.php 文件,但一切看起来都一样。 我有这样的事情:

CONTAINER ID        IMAGE                   NAMES
b2711d4b72a1        phpmyadmin/phpmyadmin   website_phpmyadmin_1
8a89ee46d673        wordpress:4.7.5         website_wordpress_1
2a167667f705        mysql:5.7               website_db_1

我的 docker-compose.yaml 看起来像这样:

version: '2'
services:
wordpress:
depends_on:
  - db
image: wordpress:4.7.5
restart: always
volumes:
  - ./wp-content:/var/www/html/wp-content 
environment:
  WORDPRESS_DB_HOST: db:3306
  WORDPRESS_DB_PASSWORD: p4ssw0rd!
ports:
  - 80:80
  - 443:443
networks:
  - back
  db:
    image: mysql:5.7
    restart: always
    volumes:
       - db_data:/var/lib/mysql
    environment:
  MYSQL_ROOT_PASSWORD: p4ssw0rd!
networks:
  - back
  phpmyadmin:
    depends_on:
       - db
    image: phpmyadmin/phpmyadmin
    restart: always
    ports:
      - 8080:80
    environment:
      PMA_HOST: db
      MYSQL_ROOT_PASSWORD: p4ssw0rd!
        networks:
      - back
     networks:
       back:
      volumes:
  db_data:

我已经运行了 docker-compose up、build 和 down,但一切都是一样的。

【问题讨论】:

  • 您能找到解决方案吗?

标签: wordpress docker docker-compose docker-container docker-image


【解决方案1】:

官方的 WordPress docker 镜像将使用您设置的环境变量 [documentation] 自动配置 wp-config.php。

如果有WORDPRESS_DB_HOSTWORDPRESS_DB_PASSWORD等变量,在创建容器时会使用它们来构建wp-config.php文件。

如果您想提供自定义的wp-config.php 文件,您需要确保没有相关的环境变量,并为您修改的文件创建卷映射,如下所示:

version: '2'
...
volumes:
  - ./wp-content:/var/www/html/wp-content 
  - ./wp-config.php:/var/www/html/wp-config.php
...

docker-compose up 上,Docker 会将您的自定义 wp-config.php 加载到容器中,然后运行 ​​WordPress 映像的 docker-entrypoint.sh,它会使用您在环境变量中设置的值更新文件。

【讨论】:

  • 它适用于 wp-content,不适用于 wp-config.php:sed: cannot rename ./sedhxG4ZS: Device or resource busy。它看起来类似于stackoverflow.com/questions/41032744/…
  • 它适用于wp-config.php如果没有设置相关的环境变量。如果您设置任何用于填充 wp-config 的环境变量,则映射将不起作用。
【解决方案2】:

诀窍:

wp:
  image: wordpress:latest
  ports:
    - 80:80
  volumes:
    - ./wp-content:/var/www/html/wp-content
    - ./wp-config.php:/usr/src/wordpress/wp-config-sample.php

当本地 wp-config.php 发生变化时,你应该从容器中删除 /var/www/html/wp-config.php,docker 会再次复制它......但它可以工作!

【讨论】:

    【解决方案3】:

    您可以使用WORDPRESS_CONFIG_EXTRA 环境变量在wp-config.php 文件中定义任何其他配置值。

    举个例子:

    WORDPRESS_CONFIG_EXTRA: |
      define('WP_ALLOW_MULTISITE', true );
      define('MULTISITE', true);
      define('SUBDOMAIN_INSTALL', false);
    

    【讨论】:

      猜你喜欢
      • 2020-12-22
      • 2012-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-31
      • 2019-12-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多