Невозможно перенести существующую MySQL базу данных Wordpress в Docker с docker -compose - PullRequest
0 голосов
/ 18 апреля 2020

Я пытаюсь перенести существующую установку Wordpress из экспортированного файла SQL в локальную среду разработки Docker. Я немного новичок в Docker, но я прошел некоторые уроки и документацию. Проблема заключается в том, что службы «wordpress» и «phpmyadmin» не могут получить доступ к базе данных.

Я выполнил поиск и замену в Vim в файле SQL, чтобы заменить экземпляры исходного URL-адреса на «http://localhost: 8000 ». Затем я использовал docker -compose.

# 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. По сути, я создал su bnet, запустив docker network create localdev --su bnet 10.0.1.0/24. Я также добавил этот файл рядом с моим docker -compose.yml:

# docker-compose.override.yml
version: '3.7'
networks:
  default:
    external:
      name: localdev

Когда я получаю доступ к http://localhost: 8000 , я не получить что-нибудь, и браузер тайм-аут. Когда я получаю доступ к http://localhost: 8080 для 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.

Кажется странным, что это будет проблема с учетными данными. Я извлек информацию базы данных Wordpress прямо из wp-config. php на хост-сервере. Я также проверил базу данных, имя пользователя и пароль, войдя в CLI MySQL на хост-сервере.

Я использовал docker -compose down -v для удаления томов после завершения работы и docker тома ls кажутся пустыми. Так что я не думаю, что это проблема с / docker -entrypoint-initdb.d / , не запущенным, потому что MySQL уже запущен. Однако я не уверен.

Я уже некоторое время устраняю неполадки. Я выполнил почти идентичную Docker установку без / docker -entrypoint-initdb.d для создания бесплатных sh установок Wordpress. Это прекрасно работает. Я мог бы действительно использовать некоторую помощь. В настоящее время я использую Debian 10. Спасибо.

ОБНОВЛЕНИЕ: У меня все еще есть проблемы. Я проверил, что у меня все еще есть те же проблемы, когда я закрываю OpenVPN, удаляю docker -compose.override.yml и удаляю сеть localdev. У меня все те же проблемы. Единственное отличие состоит в том, что PHPMyAdmin дает мне другой IP-адрес после «admin @», что ожидается.

Я вошел в свой контейнер MySQL, используя docker exe c -it . Запуск MySQL CLI с моим именем пользователя и паролем работал. Таблицы выглядели так, как будто все данные были импортированы docker -entrypoint-initdb.d. Таким образом, проблема не в docker -entrypoint-initdb.d, а в том, что службы wordpress и phpmyadmin не могут получить доступ к базе данных.

UPDATE 2: я исправил MyPHPAdmin. Я не осознавал, что PMA_USER и PMA_PASSWORD должны соответствовать базе данных Wordpress. Мне также нужно было PMA_HOST, чтобы включить номер порта:

  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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...