首页 > 解决方案 > Wordpress Docker 容器无法连接到数据库

问题描述

我正在使用以下代码,但我的本地站点无法连接到数据库

docker run --name db -p 90:3306 --restart=always --network wp-mysql-network -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=wordpress -e MYSQL_USER=wpuser -e MYSQL_PASSWORD=P@ssw0rd -v mysql- demo3:/var/lib/mysql -d mysql:latest

docker run -d --name wp-site1 --link db -p 85:80 -e WORDPRESS_HOST=db:90 --network wp-mysql-network -e MYSQL_DATABASE=wordpress -e MYSQL_USER=wpuser -e MYSQL_PASSWORD=P@ ssw0rd -v wp-data-demo3:/var/www/html wordpress:最新

标签: mysqlwordpressdocker

解决方案


当你运行类似的东西时

docker run -p 90:3306您将内部端口 3306 暴露给机器(运行 docker 的机器)端口 90。

当你将一个容器连接到另一个容器时,你应该使用内部端口,这样

docker run -d --name wp-site1 \
    --link db -p 85:80 \
    -e WORDPRESS_DB_HOST=db:3306 \
    --network wp-mysql-network \
    -e WORDPRESS_DB_NAME=wordpress \
    -e WORDPRESS_DB_USER=wpuser \
    -e WORDPRESS_DB_PASSWORD=P@ssw0rd \
    -v wp-data-demo3:/var/www/html wordpress:latest

此外,在您的情况下,您应该只公开您的前端,而不是后端(数据库)。

如果你在 HTTP 上使用 wordpress 成功,我建议你看看Traefik处理 HTTPS 连接。(下面的一个例子)。

https://graspingtech.com/wordpress-docker-compose/

编辑

  1. 创建依赖项

    docker network create wp-mysql-network
    docker volume create mysql-demo3
    docker volume create wp-data-demo3
    
  2. 创建数据库实例

    docker run --name db \
        --network wp-mysql-network \
        -v mysql-demo3:/var/lib/mysql \
        --restart=always \
        -e MYSQL_ROOT_PASSWORD=root \
        -e MYSQL_DATABASE=wordpress \
        -e MYSQL_USER=wpuser \
        -e MYSQL_PASSWORD=P@ssw0rd -d mysql:latest 
    
  3. 创建连接到 db 的 wordpress 实例

    docker run -d --name wp-site1 \
        --link db -p 85:80 \
        -e WORDPRESS_DB_HOST=db:3306 \
        --network wp-mysql-network \
        -e WORDPRESS_DB_NAME=wordpress \
        -e WORDPRESS_DB_USER=wpuser \
        -e WORDPRESS_DB_PASSWORD=P@ssw0rd \
        -v wp-data-demo3:/var/www/html wordpress:latest
    
  4. 使用您的网络浏览器连接到您的 wordpress 前端

    http://localhost:85
    

推荐阅读