Skip to content

快速参考

  • 由……维护: (注:原文中“Maintained by:”后面应该会有具体的维护者信息,若有完整内容,翻译会更加准确。这里仅根据给定的部分进行了翻译。)
    phpMyAdmin (该词通常不进行逐字翻译,直接保留原样)

  • 哪里可以获得帮助:
    Docker 社区 Slack、Server Fault、Unix & Linux 或 Stack Overflow

支持的标签及各自的 Dockerfile 链接

快速参考(续)

什么是 phpMyAdmin?

phpMyAdmin 是一个用 PHP 编写的免费软件工具,旨在通过网络处理 MySQL 的管理。phpMyAdmin 支持对 MySQL 和 MariaDB 的广泛操作。常用操作(管理数据库、表、列、关系、索引、用户、权限等)可以通过用户界面执行,同时您仍然能够直接执行任何 SQL 语句。

使用 Alpine、Apache 和 PHP FPM 运行 phpMyAdmin。

logo

如何使用此图像

以下所有示例将在 http://localhost:8080 上为您带来 phpMyAdmin,您可以在此愉快地进行 MySQL 管理。

凭据;资格证书;证件

phpMyAdmin 使用您的 MySQL 服务器凭据进行连接。请检查您相应的数据库服务器映像,以获取有关默认用户名和密码的信息,或了解如何在安装过程中指定您自己的自定义凭据。

官方的 MySQL 和 MariaDB 镜像使用以下环境变量来定义这些:

  • MYSQL_ROOT_PASSWORD - 此变量为必填项,用于指定将为 root 超级用户帐户设置的密码。
  • MYSQL_USERMYSQL_PASSWORD - 这些变量是可选的,结合使用可创建新用户并设置该用户的密码。

支持的 Docker Hub 标签

以下标签可用:

  • latestfpmfpm-alpine 始终是最新发布的版本
  • 主要版本,例如 55-fpm5-fpm-alpine
  • 特定的小版本,例如 5.05.0-fpm5-fpm-alpine
  • 特定的补丁版本,例如 5.0.05.0.0-fpm5.0.0-fpm-alpine 。请注意,在极少数情况下,可能会有一个中间的“仅 Docker”版本发布,例如 4.9.2 - 1

在 Docker Hub 可获取完整的标签列表

图像变体

我们提供三种变体:

  • “apache”包含一个带有 PHP 的完整 Apache 网络服务器,并包含开箱即用所需的一切。当仅请求版本号时,这是默认情况。
  • “fpm”仅启动一个 PHP FPM 容器。如果您已经有一个单独的网络服务器,请使用此变体。它包含更多工具,因此比“fpm - alpine”变体的镜像更大。
  • “fpm - alpine”占用空间极小。它基于 Alpine Linux,仅启动一个 PHP FPM 进程。如果您已经有一个单独的网络服务器,请使用此变体。如果您需要更多在 Alpine Linux 上不可用的工具,请使用 fpm 镜像代替。

使用链接服务器

首先,您需要在 Docker 中运行 MySQL 或 MariaDB 服务器,并且 phpMyAdmin 镜像需要链接到正在运行的数据库容器:

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

与外部服务器一起使用

您可以在 PMA_HOST 环境变量中指定 MySQL 主机。如果服务器端口不是默认端口,您还可以使用 PMA_PORT 来指定服务器的端口:

docker run --name phpmyadmin -d -e PMA_HOST=dbhost -p 8080:80 phpmyadmin

与任意服务器配合使用

您可以通过在启动命令中添加环境变量 PMA_ARBITRARY=1 来使用任意服务器:

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

使用 docker-compose 和任意服务器

这将使用任意服务器选项运行 phpMyAdmin - 允许您在登录页面上指定任何 MySQL/MariaDB 服务器。

...通过 docker-composedocker stack deploy

示例 docker-compose.yml 用于 phpmyadmin

version: '3.1'

services:
  db:
    image: mariadb:10.6
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: notSecureChangeMe

  phpmyadmin:
    image: phpmyadmin
    restart: always
    ports:
      - 8080:80
    environment:
      - PMA_ARBITRARY=1

Try in PWD

添加自定义配置

您可以通过创建一个名为 config.user.inc.php 的文件并在其中设置各种用户自定义设置(例如配置存储设置)来添加您自己的自定义 config.inc.php 设置,然后使用以下方式将其链接到容器中:

-v /some/local/directory/config.user.inc.php:/etc/phpmyadmin/config.user.inc.php

在像这样的 docker run 线上:

docker run --name phpmyadmin -d --link mysql_db_server:db -p 8080:80 -v /some/local/directory/config.user.inc.php:/etc/phpmyadmin/config.user.inc.php phpmyadmin

务必将 <?php 作为配置文件的第一行,否则内容将不会被检测为 PHP 代码。

您提供的“Example:”在英文中意为“例如:”,所以翻译成简体中文为: 例如:

<?php

$cfg['ShowPhpInfo'] = true; // Adds a link to phpinfo() on the home page

查看以下链接以获取配置文件信息:

在反向代理后面的使用情况

将变量 PMA_ABSOLUTE_URI 设置为反向代理使 phpMyAdmin 可用的完全限定路径( https://pma.example.net/ )。

环境变量摘要

  • PMA_ARBITRARY - 当设置为 1 时,将允许连接到任意服务器
  • PMA_HOST - 定义 MySQL 服务器的地址/主机名
  • PMA_VERBOSE - 定义 MySQL 服务器的详细名称
  • PMA_PORT - 定义 MySQL 服务器的端口
  • PMA_HOSTS - 定义 MySQL 服务器的地址/主机名的逗号分隔列表
  • PMA_VERBOSES - 定义 MySQL 服务器详细名称的以逗号分隔的列表
  • PMA_PORTS - 定义 MySQL 服务器端口的逗号分隔列表
  • PMA_USERPMA_PASSWORD - 定义仅与 config 身份验证方法一起使用的用户名和密码
  • PMA_ABSOLUTE_URI - 到 phpMyAdmin 的完整 URL。在反向代理配置中使用时有时需要。除非需要,否则不要设置此内容。请参阅文档。
  • PMA_CONFIG_BASE64 - 如果设置,此选项将使用变量的 base64 解码内容覆盖默认的 config.inc.php
  • PMA_USER_CONFIG_BASE64 - 如果设置,此选项将使用变量的 base64 解码内容覆盖默认的 config.user.inc.php
  • PMA_UPLOADDIR - 若已定义,此选项将设置可用于导入的文件可保存路径($cfg['UploadDir'])
  • PMA_SAVEDIR - 若已定义,此选项将设置可保存导出文件的路径($cfg['SaveDir'])
  • PMA_CONTROLHOST - 当设置后,此指向用于存储 phpMyAdmin 配置存储数据库的备用数据库主机
  • PMA_CONTROLPORT - 如果设置,将覆盖用于连接到控制主机以存储 phpMyAdmin 配置存储数据库的默认端口(3306)
  • PMA_PMADB - 定义用于 phpMyAdmin 配置存储数据库的数据库名称。未设置时,高级功能默认情况下不会启用:用户使用零配置(zero configuration)功能登录时仍可能潜在地启用它们。建议值: phpmyadminpmadb
  • PMA_CONTROLUSER - 为 phpMyAdmin 定义用于高级功能的用户名(控制用户)
  • PMA_CONTROLPASS - 为 phpMyAdmin 定义与控制用户一起使用的密码
  • PMA_QUERYHISTORYDB - 当设置为真时,可将 SQL 历史记录存储到 phpMyAdmin 配置存储数据库中。当为假时,历史记录将存储在浏览器中,并在注销时清除。
  • PMA_QUERYHISTORYMAX - 当设置为整数时,用于控制历史记录项的数量。请参阅文档。默认值为 25
  • MAX_EXECUTION_TIME - 如果设置,将覆盖 phpMyAdmin($cfg['ExecTimeLimit'])和 PHP max_execution_time(格式为 [0-9+] )的以秒为单位的最大执行时间(默认 600 秒)
  • MEMORY_LIMIT - 若设置,将为 phpMyAdmin($cfg['MemoryLimit'])和 PHP 的 memory_limit 覆盖内存限制(默认为 512M)(格式为 [0-9+](K,M,G) ,其中 K 表示千字节,M 表示兆字节,G 表示千兆字节,且 1K = 1024 字节)
  • UPLOAD_LIMIT - 如果设置,此选项将覆盖 apache 和 php-fpm 的默认值(格式为 [0-9+](K,M,G) 默认值为 2048K,这将更改 upload_max_filesizepost_max_size 值)
  • HIDE_PHP_VERSION - 若已定义,此选项将隐藏 PHP 版本( expose_php = Off )。设置为任意值(例如 HIDE_PHP_VERSION=true )。
  • APACHE_PORT - 如果已定义,此选项将把默认的 Apache 端口从 80 更改,以防您希望它在不同的端口(如非特权端口)上运行。设置为任何端口值(例如 APACHE_PORT=8090

对于与 Docker 机密一起使用,允许将 _FILE 附加到 PMA_PASSWORD 环境变量(如果已设置,它会覆盖 PMA_PASSWORD ):

docker run --name phpmyadmin -d -e PMA_PASSWORD_FILE=/run/secrets/db_password.txt -p 8080:80 phpmyadmin

可使用 _FILE 从文件中读取的变量

  • MYSQL_ROOT_PASSWORD
  • MYSQL_PASSWORD
  • PMA_USER
  • PMA_PASSWORD
  • PMA_HOSTS
  • PMA_HOST
  • PMA_CONTROLHOST
  • PMA_CONTROLUSER
  • PMA_CONTROLPASS

欲获取更详细的文档,请参阅 https://docs.phpmyadmin.net/en/latest/setup.html#installing-using-docker

请将 Docker 容器的任何问题报告至 https://github.com/phpmyadmin/docker/issues

请将有关 phpMyAdmin 的任何问题报告至 https://github.com/phpmyadmin/phpmyadmin/issues

图像变体

phpmyadmin 图像有多种类型,每种都针对特定的用例而设计。

phpmyadmin:<version>

这是事实上的映像。如果您不确定自己的需求是什么,您可能想要使用这个。它被设计为既可以用作一次性容器(挂载您的源代码并启动容器以启动您的应用程序),也可以作为构建其他映像的基础。

phpmyadmin:<version>-alpine

此图像基于流行的 Alpine Linux 项目,可在 alpine 官方镜像中获取。Alpine Linux 比大多数发行版基础镜像(约 5MB)小得多,因此总体上会生成更精简的镜像。

当您首要关注的是最终图像大小尽可能小的时候,此变体是有用的。需要注意的主要警告是,它确实使用 musl libc 而不是 glibc 及相关库,因此软件往往会根据其对 libc 要求/假设的深度而遇到问题。有关可能出现的问题以及使用基于 Alpine 的图像的一些利弊比较的更多讨论,请参阅此 Hacker News 评论线程。

为尽量减小镜像大小,在基于 Alpine 的镜像中通常不会包含其他相关工具(例如 gitbash )。以该镜像为基础,在您自己的 Dockerfile 中添加您需要的内容(如果您不熟悉如何安装软件包,请参阅 alpine 镜像说明中的示例)。

许可证

查看此映像中所包含软件的许可证信息。

与所有 Docker 镜像一样,这些镜像可能还包含其他可能受其他许可证约束的软件(例如来自基础发行版的 Bash 等,以及所包含的主要软件的任何直接或间接依赖项)。

一些能够自动检测到的额外许可信息可能会在 repo-info 存储库的 phpmyadmin/ 目录中找到。

对于任何预构建图像的使用,图像用户有责任确保对此图像的任何使用都符合其中包含的所有软件的任何相关许可。