You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker中用WP-CLI安装WordPress时数据库连接失败求助

Docker Compose部署WordPress时数据库连接错误问题

我尝试使用docker-compose搭建WordPress网站,规划部署Nginx、MariaDB、WordPress三个容器,并为WordPress和MariaDB配置数据卷。目前卡在中间步骤:使用WP-CLI配置WordPress与数据库连接时,出现「Error establishing a database connection」错误。

项目架构

|_ docker-compose.yml
|_ .env
|_ mariadb/
   |_ Dockerfile
|_ wordpress/
   |_ Dockerfile

WordPress Dockerfile(缺少entrypoint或cmd,但已出现错误)

FROM debian:buster

RUN apt update && apt install -y \
    php7.3 \
    php7.3-mysqli \
    curl

# install wp-cli
RUN curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar &&\ 
    chmod +x wp-cli.phar && \
    mv wp-cli.phar /usr/local/bin/wp

ARG WP_DIR=/var/www/html

ARG DB_NAME
ARG DB_USER
ARG DB_PSWD
ARG WP_URL
ARG WP_TITLE
ARG WP_ADMIN
ARG WP_ADMIN_PSWD
ARG WP_ADMIN_EMAIL

# install wordpress with cli
RUN wp core download --path=${WP_DIR} --allow-root
RUN wp config create --dbname=${DB_NAME} \
                     --dbuser=${DB_USER} \
                     --dbpass=${DB_PASS} \
                     --path=${WP_DIR} \
                     --allow-root \
                     --skip-check
# this command gives an error :
RUN wp core install --url=${WP_URL} \
                    --title=${WP_TITLE} \
                    --admin_user=${WP_ADMIN} \
                    --admin_password=${WP_ADMIN_PSWD} \
                    --admin_email=${WP_ADMIN_EMAIL} \
                    --path=${WP_DIR} \
                    --allow-root

MariaDB Dockerfile

FROM debian:buster

ARG DB_NAME
ARG DB_USER
ARG DB_PSWD

RUN apt update && apt install -y \
    mariadb-client \
    mariadb-server \
    && \
    rm -rf /var/lib/apt/lists/*

# configure wp database
RUN service mysql start && \
    mariadb --execute="CREATE DATABASE ${DB_NAME};" && \
    mariadb --execute="CREATE USER '${DB_USER}'@'localhost' IDENTIFIED BY '${DB_PSWD}';" && \
    mariadb --execute="GRANT ALL PRIVILEGES ON ${DB_NAME}.* TO '${DB_USER}'@'localhost' with grant option;"

# start mysql server
CMD [ "service", "mysql", "start" ]

docker-compose.yml

version: "3.8"

services:

  mariadb:
    env_file: .env
    build:
      context: ./mariadb
      args:
        - DB_NAME=${DB_NAME}
        - DB_USER=${DB_USER}
        - DB_PSWD=${DB_PSWD}
    image: mariadb
    container_name: mymariadb

  wordpress:
    env_file: .env
    build:
      context: ./wordpress
      args:
        - WP_URL=${WP_URL}
        - WP_TITLE=${WP_TITLE}
        - WP_ADMIN=${WP_ADMIN}
        - WP_ADMIN_PSWD=${WP_ADMIN_PSWD}
        - WP_ADMIN_EMAIL=${WP_ADMIN_EMAIL}
        - DB_NAME=${DB_NAME}
        - DB_USER=${DB_USER}
        - DB_PSWD=${DB_PSWD}
    image: wordpress
    container_name: mywordpress

.env文件

## MARIADB SETUP
DB_NAME=db_wp
DB_USER=db_user
DB_PSWD=db_pswd

## WORDPRESS SETUP
WP_URL=wp_url.fr
WP_TITLE=wp_blog
WP_ADMIN=wp_admin
WP_ADMIN_PSWD=wp_admin_pswd
WP_ADMIN_EMAIL=wp_email@wp.fr

错误信息

执行docker-compose build时出现以下错误:

Error establishing a database connection. This either means that the username and password information in your `wp-config.php` file is incorrect or that contact with the database server at `localhost` could not be established. This could mean your host’s database server is down.

尝试操作与疑问

  • 已尝试配置自定义网络,也设置了wordpress服务依赖mariadb服务(service_completed_successfully条件),但问题未解决,推测WordPress容器无法访问MariaDB容器中的数据库。
  • 不确定是否能在构建阶段完成WordPress安装,是否应该在运行阶段执行脚本?
  • 对MariaDB Dockerfile中的CMD [ "service", "mysql", "start" ]存在疑问:运行容器时它会在5-6秒后退出,但改用CMD [ "mysqld" ]则能正常运行,不过我认为这与当前WordPress的数据库连接问题无关。

内容的提问来源于stack exchange,提问作者hugogogo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 12:15:42