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
相关产品推荐
相关产品推荐

