代码之家  ›  专栏  ›  技术社区  ›  goblin_rocket

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

  •  2
  • goblin_rocket  · 技术社区  · 8 年前

    我最近一直在用Wordpress&Docker制作新的网站,对它的工作原理有一个合理的把握,我现在正在寻找将一些已建立的网站迁移到Docker中。

    我一直遵循这个指南:

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

    我把一切都安排好了域名:1234我收到错误消息“建立数据库连接时出错”。我已经把wp中的“DB HOST”改成了“mysql”-配置.php正如我所建议的,我从现场带来的所有DB细节都是正确的。

    我已经连接到mysql容器,并检查了db是否存在以及是否有正确的用户,还通过mysql CLI确保pw也是正确的。

    编辑:我应该提到,数据库/数据和下面的所有内容似乎都属于用户/组“polkitd input”,而不是root。

    这是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
    

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

    4 回复  |  直到 8 年前
        1
  •  1
  •   cooshal    8 年前

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

    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
  •  3
  •   xtra    8 年前

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

        3
  •  1
  •   Akshay Shikre    8 年前

    https://github.com/akshayshikre/lamp-alpine/tree/development

    这里用的是阿尔卑斯山的图片 然后安装mysql、php、apache2(lampstack)并复制本地wordpress demosite和db进行演示

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

        4
  •  0
  •   wai yan win htain    7 年前

    如果你遵循这些教程, 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
    

    当你有新想法时请告诉我。

        5
  •  0
  •   You    6 年前

    我和你分享我的方法

    显示运行版本,问题,看看是否一切都好在你这边!

    $ 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

    在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会话,这很好。 干得好。

        6
  •  0
  •   vins    5 年前

    确保 wp-config.php 文件具有为定义的相同凭据 db_user , db_password docker-composer yml 文件。我也有类似的问题,我删除了所有的文件,重新安装,看到了 docker-composer up -d 会启动一切除了 可湿性粉剂-配置.php mysql设置的文件内容没有在docker中定义。所以我做了相应的改变,最终开始工作