Поиск по сайту:

Как запустить PHPMyAdmin в контейнере Docker


PHPMyAdmin — популярный интерфейс администрирования баз данных MySQL и MariaDB. Он позволяет вам взаимодействовать со схемами, таблицами и данными с помощью веб-браузера.

У проекта есть официальный образ Docker, который упрощает развертывание в контейнерных средах. Вот как использовать образ для быстрого запуска нового экземпляра PHPMyAdmin.

Основное использование

Самая простая установка позволяет контейнеру PHPMyAdmin подключаться к любому доступному серверу базы данных:

docker run -d --name phpmyadmin -e PMA_ARBITRARY=1 -p 8080:80 phpmyadmin

Эта команда запускает PHPMyAdmin на порту 8080. Посетите localhost:8080 в своем браузере, чтобы увидеть экран входа в систему. Наличие переменной среды PMA_ARBITRARY приводит к отображению формы подключения к серверу. Укажите учетные данные хоста и пользователя вашей базы данных MySQL или MariaDB для входа в систему.

Когда вы используете этот метод, вы обычно видите предупреждение PHPMyAdmin о том, что «некоторые расширенные функции были деактивированы». Это происходит, когда на сервере, к которому вы подключены, нет базы данных с именем phpmyadmin. PHPMyAdmin использует эту схему для хранения собственных данных конфигурации.

Перейдите по ссылке предупреждения «Создать базу данных», чтобы завершить установку. Вашей учетной записи пользователя потребуется разрешение на создание новых баз данных на сервере.

Предварительная настройка сервера

В качестве альтернативы разрешению произвольного доступа вы можете запустить контейнер PHPMyAdmin с предварительно настроенным подключением к серверу. Укажите переменные среды PMA_HOST и PMA_PORT вместо PMA_ARBITRARY:

docker run -d --name phpmyadmin -e PMA_HOST=mysql.example.com -e PMA_PORT=33060 -p 8080:80 phpmyadmin

PMA_PORT является необязательным. Он будет использовать значение MySQL по умолчанию 3306, если значение не указано.

Запуск контейнера с этими переменными ограничит PHPMyAdmin работой с сервером mysql.example.com. Вам будет предложено ввести имя пользователя и пароль на экране входа в систему, но вам не нужно будет указывать имя хоста.

PHPMyAdmin также можно настроить для представления нескольких параметров сервера. Укажите PMA_HOSTS и PMA_PORTS в виде списков подключений, разделенных запятыми, чтобы включить эту функцию.

Использование контейнера MySQL Docker

Другой распространенный вариант использования — подключение к серверу MySQL или MariaDB, работающему в отдельном контейнере Docker. Вы можете открыть сервер базы данных через порт или подключить оба контейнера к общей сети Docker. В любом случае используйте переменные окружения PMA_HOST и PMA_PORT, чтобы указать PHPMyAdmin, как подключиться к серверу.

Также поддерживаются устаревшие ссылки Docker:

docker run -d --name phpmyadmin --link my_mysql_container:db -p 8080:80 phpmyadmin

Эта команда позволяет подключить PHPMyAdmin к контейнеру my_mysql_container без ручной настройки сетевых ссылок. Однако эта функциональность устарела в Docker, поэтому предпочтительнее переключиться на сетевые команды:

docker network create phpmyadmin
docker network connect phpmyadmin mysql_container_name --ip 172.17.0.1
docker network connect phpmyadmin phpmyadmin_container_name

В качестве альтернативы вы можете запустить PHPMyAdmin с предварительно настроенным сетевым подключением, используя флаг Docker --network:

docker run -d --name phpmyadmin --network phpmyadmin -p 8080:80 phpmyadmin

Теперь PHPMyAdmin сможет получить доступ к контейнеру MySQL через общую сеть. Задайте для переменной среды PMA_HOST значение 172.17.0.1 при запуске контейнера.

Упрощение развертывания с помощью Docker Compose

Написание файла Docker Compose упрощает нетривиальное развертывание. Вы можете повторно запустить новый контейнер PHPMyAdmin с помощью команды docker-compose up -d.

Вот docker-compose.yml для PHPMyAdmin в режиме произвольного подключения:

version: "3"

services:
  phpmyadmin:
    image: phpmyadmin:latest
    ports:
        - 8080:80
    environment:
        - PMA_ARBITRARY=1
    restart: unless-stopped

Docker Compose также поможет вам создать стек с новой установкой базы данных MySQL и контейнером PHPMyAdmin:

version: "3"

service:
  mysql:
    image: mysql:latest
    expose:
      - 3306
    environment:
      - MYSQL_ROOT_PASSWORD
    volumes:
      - mysql:/var/lib/mysql
    restart: unless-stopped
  phpmyadmin:
    image: phpmyadmin:latest
    ports:
      - 8080:80
    environment:
      - PMA_HOST: mysql
      - PMA_PASSWORD: ${MYSQL_ROOT_PASSWORD}
    restart: unless-stopped

volumes:
  - mysql

Запустите docker-compose up -d, чтобы запустить MySQL с полностью сетевым контейнером PHPMyAdmin. Для переменной PMA_HOST PHPMyAdmin установлено значение mysql, ссылающееся на имя службы MySQL. Docker Compose автоматически устанавливает имена хостов в соответствии с именами служб, позволяя PHPMyAdmin подключаться к MySQL через общую сеть.

Настройка установки

Образ Docker PHPMyAdmin поддерживает предоставленный пользователем файл конфигурации, который можно внедрить через том Docker. Путь: /etc/phpmyadmin/config.user.inc.php:

docker run -d 
    --name phpmyadmin 
    -e PMA_ARBITRARY=1 
    -p 8080:80 
    -v my-config-file.php:/etc/phpmyadmin/config.user.inc.php
    phpmyadmin

Вы можете добавить любые переменные конфигурации, поддерживаемые PHPMyAdmin.

Образ также поддерживает переменные среды для многих общих настроек. К ним относятся MEMORY_LIMIT, UPLOAD_LIMIT и MAX_EXECUTION_TIME, каждое из которых соответствует значениям PHP INI, которые, возможно, потребуется скорректировать, если вы используете запущенные или сложные запросы.

Конфиденциальные значения, такие как PMA_HOST, PMA_PASSWORD и MYSQL_ROOT_PASSWORD, можно вводить с использованием секретов Docker вместо простых переменных среды. Добавьте _FILE к имени переменной, затем установите значение на путь внутри контейнера, который обеспечивает фактическое значение.

docker run -d --name phpmyadmin -e PMA_HOST_FILE=/run/secrets/pma_host -p 8080:80 phpmyadmin

Краткое содержание

PHPMyAdmin — одна из самых популярных и известных утилит администрирования MySQL. Установка на «голое железо» добавляет в вашу систему несколько зависимостей, объединяя Apache и PHP вместе с исходным кодом приложения.

Установка PHPMyAdmin в Docker дает вам изолированную среду, которую можно создавать, заменять и удалять с помощью нескольких команд Docker CLI. Официальный образ может подключаться к любому серверу MySQL, доступному с вашего хоста, включая базы данных, работающие в других контейнерах Docker.

Более подробное руководство по запуску и использованию PHPMyAdmin можно найти в официальной документации. Особенно важно ознакомиться с руководством по безопасности, чтобы непреднамеренно не подвергать свою базу данных риску внешней атаки. Вы также должны учитывать лучшие практики безопасности Docker при развертывании PHPMyAdmin внутри контейнера, который открыт для внешнего мира.




Все права защищены. © Linux-Console.net • 2019-2024