Wordpress Docker容器无法连接到数据库容器

时间:2018-09-23 21:01:48

标签: wordpress docker docker-compose

我正在尝试将worpdress站点迁移到docker容器以进行本地开发。

但是,每次我使用docker compose时,我都会不断得到这个信息:

  

MySQL连接错误:(1045)用户'root'@'172.22.0.3'的访问被拒绝

我已经仔细检查了密码,并通过db容器上的外壳验证了密码。

这是我的docker-compose文件:

services: # configuring each container
db: # name of our mysql container
image: mysql:5.7 # which image to pull, in this case specifying v. 5.7
volumes: # data to map to the container
  - ./data:/docker-entrypoint-initdb.d # where to find our data - we'll talk more about this
restart: always # always restart the container after reboot
environment: # environment variables -- mysql options in this case
  MYSQL_ROOT_PASSWORD: *****
  MYSQL_DATABASE: **_***
  MYSQL_USER: *****
  MYSQL_PASSWORD: *****

....
wordpress:
    depends_on: # container dependencies that need to be running first
  - db
  image: wordpress:latest # image used by our container
   ports:
  - "8080:80" # setting our ports for networking
   restart: always
   environment:
     WORDPRESS_DB_HOST: db:3306 # default mysql port
     WORDPRESS_DB_PASSWORD: **** # matches $MYSQL_PASSWORD
   volumes: # this is where we tell Docker what to pay attention to
  - ./wp-content/themes/chronus:/var/www/html/wp-content/themes/chronus # mapping our custom theme to the container
  - ./wp-content/plugins:/var/www/html/wp-content/plugins # map our plugins to the container
  - ./wp-content/uploads:/var/www/html/wp-content/uploads # map our uploads to the container

1 个答案:

答案 0 :(得分:1)

我假设您正在使用来自docker hub的官方Wordpress image。您已指定WORDPRESS_DB_PASSWORD标志,但未指定WORDPRESS_DB_USER。也就是说,wordpress插件默认为root

但是,根据您的评论,您在此处输入了任意用户(而不是root用户)的密码。

在撰写文件中按如下所示修改wordpress容器的环境变量,它应该可以工作:

   environment:
       WORDPRESS_DB_HOST: db:3306 # default mysql port
       WORDPRESS_DB_PASSWORD: **** # matches $MYSQL_PASSWORD
       WORDPRESS_DB_USER: **** # matches $MYSQL_USER