将wordpress站点移动到docker:建立db连接时出错

0mkxixxg  于 2021-06-20  发布在  Mysql
关注(0)|答案(5)|浏览(428)

我最近一直在用wordpress&docker制作新网站,并且对它的工作原理有一个合理的把握,我现在正在寻找将一些已建立的网站迁移到docker中。
我一直遵循这个指南:
https://stephenafamo.com/blog/moving-wordpress-docker-container/
我有一切设置,因为它应该是,但当我去我的领域。com:1234 i 获取错误消息“建立数据库连接时出错”。我已经按照建议在wp-config.php中将“db host”更改为“mysql”,并且im引入的站点中的所有db细节都是正确的。
我已经连接到mysql容器,并检查了db是否存在以及是否有正确的用户,还通过mysql cli确保pw也是正确的。
selinux设置为permissive,我没有更改任何目录/文件的所有权或权限,对于后者,目录和文件都是755和644。
编辑:我应该提到,数据库/数据和下面的所有内容似乎都属于用户/组“polkitd input”,而不是root。
docker日志也没有告诉我太多,除了我在1234端口浏览站点时wp容器的500条错误消息(正如预期的那样)。
这是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

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

q5iwbnjs

q5iwbnjs1#

请看下面的剧本。我试过试过了。很好用。

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

如果您遇到进一步的问题,请告诉我。

wgxvkvu9

wgxvkvu92#

如果你想把所有的东西都放在一个容器里,你可以参考这里的回购协议,https://github.com/akshayshikre/lamp-alpine/tree/development
这里使用lamp alpine图片,然后安装mysql、php、apache2(lamp堆栈),并复制本地wordpress demosite和db进行演示
如果不希望任何类型的连续集成部分忽略.circleci文件夹,请检查docker compose file和dockerfile,环境变量在.env文件中

dw1jzc5e

dw1jzc5e3#

在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是一个绑定装载到当前目录的文件。

hyrbngr7

hyrbngr74#

如果你遵循这些教程,https://stephenafamo.com/blog/moving-wordpress-docker-container/,您的网站将无法正常工作。因为它不还原数据库,您需要使用此命令手动还原initdb.d dir中存在的.sql转储文件。

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

我也困在这个和我的css工作不正常。当你有新想法时请告诉我。

ghhaqwfi

ghhaqwfi5#

我和你分享我的方法
显示运行版本,问题,看看是否一切都好在你这边!

$ docker --version && docker-compose --version

运行docker copose文件

$ docker-compose -f docker-compose.yml up -d

等你快进
显示正在运行的容器和正在端口8000上侦听的wordpress容器的名称

$ docker ps

如果您遵循了网站上列出的步骤,您将在表中看到wordpress容器的名称,如下所示https://hub.docker.com/_/wordpress

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES

xxxxxxxxxxxx        wordpress:latest    "docker-entrypoint.s…"   8 minutes ago       Up 8 minutes        0.0.0.0:8000->80/tcp   cms_wordpress_1

xxxxxxxxxxxx        mysql:5.7           "docker-entrypoint.s…"   8 minutes ago       Up 8 minutes        3306/tcp, 33060/tcp    cms_db_1

如果您在浏览器中查看地址:localhost:8000 you 将得到消息“建立数据库连接时出错”
在wordpress容器中启动bash

$ docker exec -it cms_wordpress_1 bash

apt更新失败,因为没有连接

$ apt update

打开新终端并显示当前防火墙配置

$ sudo cat /etc/firewalld/firewalld-workstation.conf | greb 'FirewallBackend'
currently set to 'nftables'

将值设置为“iptables”

$ sudo sed -i 's/FirewallBackend=nftables/FirewallBackend=iptables/g' /etc/firewalld/firewalld-workstation.conf

确认新值

$ sudo cat /etc/firewalld/firewalld-workstation.conf | grep 'FirewallBackend'

重新启动firwalld服务以应用更改

$ sudo systemctl restart firewalld.service

在浏览器中刷新正在运行的wordpress会话,这很好。干得好。

相关问题