首页 > 解决方案 > 将 Wordpress 站点移动到 Docker:建立数据库连接时出错

问题描述

我最近一直在使用 Wordpress 和 Docker 创建新站点,并且对它的工作原理有了合理的了解,我现在希望将一些已建立的站点迁移到 Docker 中。

我一直在关注本指南:

https://stephenafamo.com/blog/moving-wordpress-docker-container/

我已按应有的方式进行了所有设置,但是当我转到 domain.com:1234 时,我收到错误消息“建立数据库连接时出错”。我已按照建议将 wp-config.php 中的 'DB HOST' 更改为 'mysql',并且我引入的站点中的所有 DB 详细信息都是正确的。

我已经附加到 mysql 容器并检查了 db 是否存在并且使用了正确的用户,并且还通过 mysql CLI 确保 pw 是正确的。

SELinux 设置为许可,我没有更改任何目录/文件所有权或权限,对于后者,目录都是 755,文件应该是 644。

编辑:我应该提一下,数据库/数据及其下的所有内容似乎都归用户/组“polkitd input”所有,而不是root。

当我在端口 1234 上浏览站点时(如预期的那样),除了 WP 容器的 500 条错误消息之外,Docker 日志并没有真正告诉我太多。

这是 docker-compose 文件:

version: '2'

services:
  example_db:
    image: mysql:latest
    container_name: example_db
    volumes:
      - ./database/data:/var/lib/mysql
      - ./database/initdb.d:/docker-entrypoint-initdb.d
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: password123 # any random string will do
      MYSQL_DATABASE: mydomin_db # the name of your mysql database
      MYSQL_USER: my domain_me # the name of the database user
      MYSQL_PASSWORD: password123 # the password of the mysql user

  example:
    depends_on:
      - example_db
    image: wordpress:php7.1 # we're using the image with php7.1
    container_name: example
    ports:
      - "1234:80"
    restart: always
    links:
      - example_db:mysql
    volumes:
      - ./src:/var/www/html

建议最受欢迎,因为我没有想法!

标签: mysqlwordpressdockerdocker-compose

解决方案


使用新版本的 docker-compose 它看起来像这样(如果你不想使用 PhpMyAdmin,你可以省略它):

version: '3.7'

volumes:
  wp-data:
networks:
  wp-back:

services:

  db:
    image: mysql:5.7
    volumes:
      - wp-data:/var/lib/mysql
    environment:
       MYSQL_ROOT_PASSWORD: rootPassword
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wp-user
       MYSQL_PASSWORD: wp-pass
    ports:
      - 8889:3306
    networks:
      - wp-back

  phpmyadmin:
    depends_on:
      - db
    image: phpmyadmin/phpmyadmin
    environment:
      PMA_HOST: db
      MYSQL_USER: wp-user
      MYSQL_PASSWORD: wp-pass
      MYSQL_ROOT_PASSWORD: rootPassword
    ports:
      - 3001:80
    networks:
      - wp-back

  wordpress:
    depends_on:
      - db
    image: wordpress:latest
    ports:
      - 8888:80
      - 443:443
    environment:
       WORDPRESS_DB_HOST: db
       WORDPRESS_DB_USER: wp-user
       WORDPRESS_DB_PASSWORD: wp-pass
    volumes:
      - ./wordpress-files:/var/www/html
    container_name: wordpress-site
    networks:
      - wp-back

数据库卷是一个命名卷 wp-data,而 wordpress html 是一个绑定挂载到您当前目录的 ./wordpress-files 。


推荐阅读