Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Can';t使用Docker compose将现有MySQL Wordpress数据库迁移到Docker_Mysql_Wordpress_Docker_Docker Compose - Fatal编程技术网

Can';t使用Docker compose将现有MySQL Wordpress数据库迁移到Docker

Can';t使用Docker compose将现有MySQL Wordpress数据库迁移到Docker,mysql,wordpress,docker,docker-compose,Mysql,Wordpress,Docker,Docker Compose,我正在尝试将预先存在的Wordpress安装从导出的SQL文件迁移到本地Docker开发环境。我对Docker有些陌生,但我已经阅读了一些教程和文档。问题似乎是“wordpress”和“phpmyadmin”服务无法访问数据库 我在Vim中对SQL文件进行了搜索和替换,将原始URL的实例替换为“”。然后我用docker作曲 # docker-compose.yml version: "3.7" services: db: image: mysql:5.7.29 volumes

我正在尝试将预先存在的Wordpress安装从导出的SQL文件迁移到本地Docker开发环境。我对Docker有些陌生,但我已经阅读了一些教程和文档。问题似乎是“wordpress”和“phpmyadmin”服务无法访问数据库

我在Vim中对SQL文件进行了搜索和替换,将原始URL的实例替换为“”。然后我用docker作曲

# docker-compose.yml
version: "3.7"
services:
  db:
    image: mysql:5.7.29
    volumes:
      - ./dbdata-import/:/docker-entrypoint-initdb.d/ # Where my exported SQL file is stored
      # I also tried -./dbdata-import/thedata.sql:/docker-entrypoint-initdb.d/thedata.sql
      - ./dbdata:/var/lib/mysql # So local database changes persist
    ports:
      - "3306:3306"
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_DATABASE: wp_database
      MYSQL_USER: wp_username
      MYSQL_PASSWORD: wp_password

  wordpress:
    depends_on:
      - db
    image: wordpress:php7.3-apache
    ports:
      - "8000:80"
    restart: always
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: wp_username
      WORDPRESS_DB_PASSWORD: wp_password
      WORDPRESS_DB_NAME: wp_database
      WORDPRESS_TABLE_PREFIX: wp_ #Tried without and without this
      WORDPRESS_DEBUG: 1
    volumes:
      - ./wp-vol:/var/www/html

  phpmyadmin:
    depends_on:
      - db
    image: phpmyadmin/phpmyadmin:4.9.4
    container_name: phpmyadmin
    environment:
      PMA_HOST: db
      PMA_USER: admin
      PMA_PASSWORD: phpmyadmin_password
    restart: always
    ports:
      - "8080:80"
值得注意的是,我使用了OpenVPN,所以我仍然可以使用OpenVPN。基本上,我通过运行docker network create localdev创建了一个子网——子网10.0.1.0/24。我还在docker-compose.yml旁边添加了此文件:

# docker-compose.override.yml
version: '3.7'
networks:
  default:
    external:
      name: localdev
当我访问时,我什么也得不到,浏览器超时。当我访问PHPMyAdmin时,我得到错误:

MySQL said: Documentation
Cannot connect: invalid settings.
mysqli_real_connect(): (HY000/1045): Access denied for user 'admin'@'10.0.1.3' (using password: YES)
phpMyAdmin tried to connect to the MySQL server, and the server rejected the connection. You should check the host, username and password in your configuration and make sure that they correspond to the information given by the administrator of the MySQL server.
这似乎很奇怪,这将是一个凭证问题。我直接从主机服务器上的wp-config.php获取Wordpress数据库信息。我还通过在主机服务器上登录MySQL CLI来测试数据库、用户名和密码

我使用docker compose down-v在完成后删除卷,docker卷ls看起来是空的。因此,我认为/docker-entrypoint-initdb.d/没有运行并不是一个问题,因为MySQL已经初始化了。然而,我不确定

我已经解决这个问题有一段时间了。我在没有/Docker entrypoint initdb.d的情况下完成了几乎相同的Docker安装,以创建新的Wordpress安装。那很好。我真的需要一些帮助。我目前正在运行Debian 10。谢谢

更新:我仍然有问题。我验证了在关闭OpenVPN、删除docker-compose.override.yml和删除localdev网络时仍然存在相同的问题。我也有同样的问题。唯一的区别是PHPMyAdmin在“admin@”之后给了我一个不同的IP地址,这是预期的

我使用docker exec-it登录我的MySQL容器。使用我的用户名和密码运行MySQL CLI有效。这些表看起来好像所有数据都是由docker entrypoint initdb.d导入的因此问题似乎不是docker entrypoint initdb.d,而是wordpress和phpmyadmin服务无法访问数据库。

更新2:我修复了MyPHPAdmin。我没有意识到PMA_用户和PMA_密码需要与Wordpress数据库匹配。我还需要PMA_主机包含端口号:

  phpmyadmin:
    depends_on:
      - db
    image: phpmyadmin/phpmyadmin:4.9.4
    environment:
      PMA_HOST: db:3306
      PMA_USER: wp_username
      PMA_PASSWORD: wp_password
    restart: always
    ports:
      - "8080:80"

我仍然需要Wordpress的帮助。

您使用的凭据是否与您要迁移的原始数据库中的凭据相同?或者您正在尝试通过MYSQL_USER和类似变量设置新凭据?@taleodor MYSQL_ROOT_PASSWORD是一个新密码。我想我没有来自生产主机服务器的MySQL根密码。我对MySQL docker映像的理解是,这并不重要,因为它在容器初始化时创建了一个新的根帐户。其余的环境变量与我要从中迁移的原始数据库中的环境变量相匹配。因此,假设您不使用root密码,就可以了。我可以建议调试-1。docker exec进入mysql容器,检查是否可以使用wordpress/phpmyadmin的凭据连接到db,2。docker exec安装到wordpress容器中,手动安装mysql客户端,看看是否可以从那里连接到db容器。观察可能出现的错误以获取线索,并在出现问题时使用凭据。我知道如何执行此操作,您是否仍需要帮助?您使用的凭据是否与您要从中迁移的原始数据库中使用的凭据相同?或者您正在尝试通过MYSQL_USER和类似变量设置新凭据?@taleodor MYSQL_ROOT_PASSWORD是一个新密码。我想我没有来自生产主机服务器的MySQL根密码。我对MySQL docker映像的理解是,这并不重要,因为它在容器初始化时创建了一个新的根帐户。其余的环境变量与我要从中迁移的原始数据库中的环境变量相匹配。因此,假设您不使用root密码,就可以了。我可以建议调试-1。docker exec进入mysql容器,检查是否可以使用wordpress/phpmyadmin的凭据连接到db,2。docker exec安装到wordpress容器中,手动安装mysql客户端,看看是否可以从那里连接到db容器。观察可能出现的错误以寻找线索,如果出现问题,请使用凭据。我知道如何执行此操作,您还需要帮助吗?