将Wordpress站点移动到Docker:建立数据库连接时出错

问题描述 投票:2回答:4

我最近一直在使用Wordpress和Docker制作新网站,并合理掌握它是如何工作的,我现在希望将一些已建立的网站迁移到Docker。

我一直在关注这个指南:

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

我有应有的一切设置,但当我去我的domain.com:1234时,我收到错误消息'建立数据库连接错误'。我已经根据建议将'DB HOST'更改为wp-config.php中的'mysql',并且我引入的网站的所有数据库详细信息都是正确的。

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

SELinux设置为允许,我没有更改任何目录/文件所有权和权限,后者的dirs都是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

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

mysql wordpress docker docker-compose
4个回答
2
投票

请查看以下撰写脚本。我试过并测试过。它工作正常。

version: '2'

services:
  db:
    image: mysql:latest
    container_name: db_server
    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: udb_test # the name of your mysql database
      MYSQL_USER: me_prname # the name of the database user
      MYSQL_PASSWORD: password123 # the password of the mysql user

  example:
    depends_on:
      - db
    image: wordpress:php7.1 # we're using the image with php7.1
    container_name: wp-web
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: me_prname
      WORDPRESS_DB_PASSWORD: password123
      WORDPRESS_DB_NAME: udb_test
    ports:
      - "1234:80"
    restart: always
    volumes:
      - ./src:/var/www/html

如果您遇到其他问题,请告诉我。


2
投票

使用新版本的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的绑定安装。


1
投票

如果你想在一个容器中全部使用,你可以在这里引用这个回购,https://github.com/akshayshikre/lamp-alpine/tree/development

这里使用灯 - 高山图像然后安装mysql,php,apache2(灯堆)并复制本地wordpress demosite和db用于演示目的

如果你不想要任何类型的连续集成部分忽略.circleci文件夹检查docker-compose文件和Dockerfile,环境变量在.env文件中


0
投票

如果你按照本教程https://stephenafamo.com/blog/moving-wordpress-docker-container/,你的网站将无法正常工作。 Coz它不恢复数据库,您需要使用此命令手动恢复initdb.d目录中存在的.sql转储文件。

cat backup.sql | docker exec -i CONTAINER /usr/bin/mysql -u root --password=root DATABASE

我也坚持这个,我的CSS不能正常工作。当你有新想法时请告诉我。

© www.soinside.com 2019 - 2024. All rights reserved.