前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用 Docker 部署 phpmyadmin 应用

使用 Docker 部署 phpmyadmin 应用

作者头像
用户1560186
发布2020-01-02 16:23:04
6.4K0
发布2020-01-02 16:23:04
举报
文章被收录于专栏:运维录运维录
《复仇者联盟4:终局之战》右手暴风战斧,左手雷神锤
开始之前

phpmyadmin 是一个使用PHP语言开发的工具软件,可以通过web方式操作mysql数据库,例如添加、查询、变更、删除数据等。

在容器时代之前,我们部署 phpmyadmin 应用,需要先准备好php 程序运行环境、然后下载源码、配置数据库等,最后完成部署工作。

在容器时代,部署 phpmyadmin 应用则变得简单,下载 phpmyadmin 官方提供的 Docker镜像,然后运行容器就可以了。例如运行一个 phpmyadmin 容器。

代码语言:javascript
复制
# 运行容器自动下载镜像,仓库在国外时间可能较长
# PMA_HOST变量,指 mysql服务器地址
docker run --name myadmin -d \
    -e PMA_HOST=mysql-server-host \
    -p 8080:80 \
    phpmyadmin/phpmyadmin
环境描述
代码语言:javascript
复制
容器镜像: phpmyadmin:latest
容器系统: debian 9 (stretch)
Docker主机: Ubuntu Server 16.04
应用策略: 仅为测试环境提供 phpmyadmin 工具。

注意事项: 为了数据安全限制了使用条件:

  • 仅允许办公室IP通过防火墙。
  • 禁止 mysql root账户登录。
  • 仅允许指定账户ruser(这里是只读)登录。
操作步骤

因为增加了限制规则,所以我们需要定制 phpmyadmin 镜像,附加修改后 config.inc.php 配置文件。

1. 镜像构建目录

代码语言:javascript
复制
tree ./
├── conf
│   └── config.inc.php
└── Dockerfile

1 directory, 2 files

2. 修改配置文件

代码语言:javascript
复制
# 配置文件从 phpmyadmin 容器中获得:
# docker run --rm phpmyadmin:latest cat /etc/phpmyadmin/config.inc.php >> config.inc.php

# 编辑 config.inc.php
# 查找 $cfg['Servers'][$i]['AllowNoPassword'] 行
# 并添加以下行,ruser 替换自己的只读用户
        $cfg['Servers'][$i]['AllowRoot'] = false;
        $cfg['Servers'][$i]['AllowDeny']['order'] = 'explicit';
        $cfg['Servers'][$i]['AllowDeny']['rules'] = array('allow ruser from all');

MySQL 授权语句可以参考这篇文章

3. Dockerfile 文件

代码语言:javascript
复制
cat Dockerfile

# custom phpmyadmin

FROM phpmyadmin/phpmyadmin
MAINTAINER dongnan #<@微信公众号:运维录>

# configure file
COPY conf/config.inc.php /etc/phpmyadmin/config.inc.php

# env
ENV TZ=Asia/Shanghai \
    LANG=en_US.UTF-8

4. 构建镜像

代码语言:javascript
复制
docker build -t myadmin:0.0.1 .
# 省略...
Successfully built d8241af7fac8

5. 运行容器根据实际环境,部署 phpmyadmin 容器。

代码语言:javascript
复制
# 我的容器环境为 rancher:
选择项目 -> 添加服务 -> 指定镜像 -> 服务链接(别名) -> 目标服务(数据库) -> 名称(db)

# 名称配置为db 是因为 phpmyadmin 配置文件中mysql数据库主机名设置为 db。

6. 验证

a. 测试 root 用户,提示禁止登录;

b. 测试指定的用户 ruser ,允许登录;

参考文章
代码语言:javascript
复制
https://hub.docker.com/r/phpmyadmin/phpmyadmin
https://stackoverflow.com/questions/2631269/how-to-secure-phpmyadmin
https://docs.phpmyadmin.net/en/latest/setup.html#installing-using-docker
小结

最后来总结下文章中的知识点

  • phpmyadmin 是一个使用PHP语言开发的工具软件,可以通过web方式操作mysql数据库
  • http协议明文传输,通过使用 https 协议加密数据,避免此问题。
  • 服务器暴漏在公网,被恶意扫描渗透等攻击行为,通过防火墙白名单机制解决 因为 phpmyadmin 只面向公司特定的人员开放,所以防火墙仅信任他们的IP即可。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-12-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 运维录 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 《复仇者联盟4:终局之战》右手暴风战斧,左手雷神锤
  • 开始之前
  • 环境描述
  • 操作步骤
  • 参考文章
  • 小结
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档