Перемещение сайта Wordpress в Docker: Ошибка при установлении соединения с БД - PullRequest
0 голосов
/ 05 сентября 2018

Я недавно создавал новые сайты с Wordpress & Docker, и у меня есть разумное представление о том, как все это работает, и теперь я хочу переместить некоторые признанные сайты в Docker.

Я следовал этому руководству:

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

У меня все настроено так, как должно быть, но когда я захожу на домен domain.com:1234, я получаю сообщение об ошибке «Ошибка при установлении соединения с базой данных». Я изменил «DB HOST» на «mysql» в wp-config.php, как было рекомендовано, и все данные о БД с сайта, который я ввожу, верны.

Я подключился к контейнеру mysql и проверил, что БД там и с нужным пользователем, а также убедился, что pw верен и через CLI mysql.

SELinux настроен на разрешение, и я не изменил ни владельца, ни права доступа к файлам / каталогам, и для последних все каталоги 755 и файлы 644, как и должно быть.

Редактировать: я должен упомянуть, что база данных / данные и все, что под ними, кажется, принадлежит пользователю / группе 'polkitd input' вместо root.

Журналы Docker не слишком много говорят мне, кроме 500 сообщений об ошибках для контейнера WP, когда я просматриваю сайт через порт 1234 (как и ожидалось).

Это файл 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 ]

0 голосов
/ 23 января 2019

Если вы будете следовать этим учебникам, https://stephenafamo.com/blog/moving-wordpress-docker-container/, ваш сайт не будет работать должным образом. Coz Это не восстанавливает базу данных, и вам нужно восстановить вручную .sql файл дампа, существовавший в директории initdb.d с помощью этой команды.

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

Я тоже застрял в этом, и мой CSS не работает должным образом. Пожалуйста, дайте мне знать, когда у вас появится новая идея.

0 голосов
/ 05 сентября 2018

если вы хотите все это в одном контейнере, вы можете обратиться к этому репо здесь, https://github.com/akshayshikre/lamp-alpine/tree/development

Здесь из лампы-альпийское изображение используется Затем mysql, php, apache2 (стек ламп) устанавливаются и копируются в локальный WordPress Демозит и DB для демонстрационной цели

если вы не хотите какую-либо часть непрерывной интеграции, игнорируйте папку .circleci Проверьте docker-compose файл и Dockerfile, переменные окружения находятся в файле .env

0 голосов
/ 07 сентября 2018

С новой версией 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.

0 голосов
/ 05 сентября 2018

Пожалуйста, посмотрите на следующий сценарий создания. Я попробовал и проверил. Работает нормально.

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

Дайте мне знать, если у вас возникнут дополнительные проблемы.

...