使用 Docker 容器化数据库并通过 phpMyAdmin 进行访问

98次阅读
没有评论

问题描述

在使用 Docker 容器化 MariaDB 数据库时,希望能够通过 phpMyAdmin 从 Docker 容器外部访问 Mariadb 数据库。现有的 MariaDB 容器已经在运行并正常工作。

解决方案

请注意以下操作可能涉及版本差异,建议在操作之前备份相关数据。

步骤 1: 在 Dockerfile 中暴露服务器端口

在 MariaDB 容器中暴露服务器端口,以便能够从外部访问。以下是在 Dockerfile 中实现的步骤:

  1. 打开 MariaDB 容器的 Dockerfile。
  2. 找到适用的位置,添加以下命令来暴露 MariaDB 服务器端口(默认为 3306 端口):

Dockerfile
EXPOSE 3306

步骤 2: 获取容器监听的 IP 地址

在容器内运行的 MariaDB 服务器可能监听了一个特定的 IP 地址。你需要获取这个 IP 地址,以便后续配置 phpMyAdmin。以下是获取容器 IP 地址的步骤:

  1. 打开终端并运行以下命令,以获取容器的 IP 地址:

bash
docker inspect <container_name_or_id> | jq .[0].NetworkSettings.Networks[].IPAddress

请注意,上述命令中的 <container_name_or_id> 应替换为实际的容器名称或 ID。需要安装 JQ 工具,可以通过以下方式安装:

bash
# 使用适合你系统的包管理工具安装 JQ

步骤 3: 配置 phpMyAdmin 连接

现在,你需要配置 phpMyAdmin 以连接到 MariaDB 容器的 IP 地址。以下是配置步骤:

  1. 打开 phpMyAdmin 配置文件(通常为 config.inc.php)。
  2. 找到连接到 MySQL/MariaDB 的服务器部分。
  3. 修改服务器的主机地址为步骤 2 中获取到的容器 IP 地址:

php
$cfg['Servers'][$i]['host'] = '<container_ip_address>';

步骤 4: 启动 phpMyAdmin 容器

现在,你可以启动一个 phpMyAdmin 容器来连接到运行中的 MariaDB 容器。以下是启动 phpMyAdmin 容器的步骤:

  1. 创建一个 docker-compose.yml 文件,用于定义 phpMyAdmin 容器。

yaml
version: '3'
services:
phpmyadmin:
image: phpmyadmin/phpmyadmin
ports:
- 8080:80
environment:
PMA_HOST: <container_ip_address>

请将 <container_ip_address> 替换为步骤 2 中获取到的容器 IP 地址。

  1. 在终端中进入包含 docker-compose.yml 文件的目录,并运行以下命令启动 phpMyAdmin 容器:

bash
docker-compose up -d

  1. 打开浏览器,访问 http://localhost:8080,即可进入 phpMyAdmin 界面,输入数据库连接信息进行操作。

注意事项

  • 如果你的容器之间存在依赖关系,确保容器 A(MariaDB)启动并完全可用后,再启动容器 B(phpMyAdmin)。
  • 需要确保防火墙或网络配置允许从外部访问容器的端口。
  • 为了安全考虑,在生产环境中建议使用安全连接(SSL/TLS)来保护数据库连接。

以上操作将允许你通过 phpMyAdmin 访问运行在 Docker 容器中的 MariaDB 数据库。按照上述步骤配置后,你可以使用 phpMyAdmin 管理和操作数据库。

请注意,Docker 和 phpMyAdmin 版本可能会影响配置步骤,建议参考官方文档和社区资源获取最新信息和支持。

参考链接:
Docker 官方文档 – Expose
phpMyAdmin 官方文档 – 配置
JQ 官方网站

希望以上解决方案能够帮助你成功访问和管理 Docker 容器中的 MariaDB 数据库!如有问题或疑问,请随时向我提问。

正文完