【问题标题】:Error establish a database connection docker compose错误建立数据库连接 docker compose
【发布时间】:2020-02-13 10:22:06
【问题描述】:

我正在尝试使用docker 设置wordpress。我在下面包含了我的 yaml 文件。在这里,我将 mariadb_database 设置为 db_tyre。

当我点击docker-compose up -d 时,它正在创建所有需要的wordpress 文件。这也在创建 db_tyre 数据库,但是当我尝试 localhost:8000 时,它给了我Error establishing a database connection

我检查了 wp-config.php 文件,它有以下几行。

define( 'DB_NAME', 'wordpress');

/** MySQL database username */
define( 'DB_USER', 'wordpress');

/** MySQL database password */
define( 'DB_PASSWORD', 'wordpress');

/** MySQL hostname */
define( 'DB_HOST', 'mariadb:3306');

yml 文件

version: '3'

services:
  # Database
  db:
    image: bitnami/mariadb:latest
    volumes:
      - db_data:/var/lib/mysql
    restart: always
    environment:
      MARIADB_ROOT_PASSWORD: password
      MARIADB_DATABASE: db_tyre
      MARIADB_USER: wordpress
      MARIADB_PASSWORD: wordpress
    networks:
      - wpsite
  # Wordpress
  wordpress:
    depends_on:
      - db
    image: wordpress:latest
    ports:
      - '8000:80'
    restart: always
    volumes: ['./:/var/www/html']
    environment:
      WORDPRESS_DB_HOST: mariadb:3306
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_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
networks:
  wpsite:
volumes:
  db_data:

【问题讨论】:

  • 您应该将 db-host 更改为 define( 'DB_HOST', 'db:3306') 作为您在 docker-compose 中使用的服务名称
  • @invad0r DB_NAME 和 DB_USER 怎么样?
  • 他们应该没问题

标签: php wordpress docker docker-compose


【解决方案1】:

正如评论中提到的,您应该设置更新HOST,但它仍然不起作用,因为 WordPress 数据库配置似乎不正确。

DB 的 ENV 是

      MARIADB_ROOT_PASSWORD: password
      MARIADB_DATABASE: db_tyre
      MARIADB_USER: wordpress
      MARIADB_PASSWORD: wordpress

所以应该更新 WordPress 数据库配置,它应该是 db_tyre

define( 'DB_NAME', 'db_tyre');

/** MySQL database username */
define( 'DB_USER', 'wordpress');

/** MySQL database password */
define( 'DB_PASSWORD', 'wordpress');

/** MySQL hostname */
define( 'DB_HOST', 'db:3306');

或者可以试试官方图片

version: '3.1'

services:

  wordpress:
    image: wordpress
    restart: always
    ports:
      - 8080:80
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: exampleuser
      WORDPRESS_DB_PASSWORD: examplepass
      WORDPRESS_DB_NAME: exampledb
    volumes:
      - wordpress:/var/www/html

  db:
    image: mysql:5.7
    restart: always
    environment:
      MYSQL_DATABASE: exampledb
      MYSQL_USER: exampleuser
      MYSQL_PASSWORD: examplepass
      MYSQL_RANDOM_ROOT_PASSWORD: '1'
    volumes:
      - db:/var/lib/mysql

volumes:
  wordpress:
  db:

【讨论】:

  • 使用提供的配置,不会自动设置wp_config文件吗?
  • 应该可以,但是如果有问题,你可以试试docker-compose down,因为卷保持数据库持久化并且新密码不会生效,还有什么问题吗?
  • 是同样的问题
  • 我试过 docker-compose down 还是有同样的问题
猜你喜欢
  • 2017-11-14
  • 2019-04-13
  • 2019-04-28
  • 1970-01-01
  • 2020-06-07
  • 2020-06-28
  • 2019-08-20
  • 2018-12-21
  • 2018-12-03
相关资源
最近更新 更多