简体   繁体   English

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

[英]Wordpress Docker container can't connect to database container

I am trying to migrate a worpdress site to a docker container for local development.我正在尝试将 worpdress 站点迁移到 docker 容器以进行本地开发。

However every time I use docker compose I keep getting this:但是,每次我使用 docker compose 时,我都会得到这个:

MySQL Connection Error: (1045) Access denied for user 'root'@'172.22.0.3' MySQL 连接错误:(1045) 用户 'root'@'172.22.0.3' 访问被拒绝

I've double checked the passwords and validated them via shell on the db container.我已经仔细检查了密码并通过 db 容器上的 shell 验证了它们。

Here is my docker-compose file:这是我的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

I am assuming you are using the official Wordpress image from docker hub.我假设您使用的是来自 docker hub 的官方Wordpress 图像 You have specifified the WORDPRESS_DB_PASSWORD flag but not the WORDPRESS_DB_USER .您已指定WORDPRESS_DB_PASSWORD标志但未指定WORDPRESS_DB_USER That means, the wordpress plugin is defaulting to root .这意味着,wordpress 插件默认为root

However, as per your comments, you entered the the password for some arbitrary user here (not the root user).但是,根据您的评论,您在此处输入了某个任意用户(不是 root 用户)的密码。

Modify the wordpress containers' environment variables as follows in your compose file and it should work:在您的撰写文件中按如下方式修改 wordpress 容器的环境变量,它应该可以工作:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM