Help us understand the problem. What is going on with this article?

phpMyAdmin on docker が便利すぎる

More than 3 years have passed since last update.

Docker使ってWEBシステムを開発している場合、コンテナでMySQLサーバーを起動することが定石だと思います。
で、このDBの中身をGUI的に操作したい場合、3306ポートをEXPOSEしちゃう?

....そんな必要はありません!

DBをGUI的に操作するコンテナ、つまりphpMyAdminコンテナがあればいいんです!

phpMyAdminの公式Docker imageのページはこちら
https://hub.docker.com/r/phpmyadmin/phpmyadmin/

公式ならほぼ安心ですが、Docker imageには危険なexploitが埋め込まれていたりすることもあるので、Dockerfileも念のため確認しておきます。

https://hub.docker.com/r/phpmyadmin/phpmyadmin/~/dockerfile/

やっぱalpineベースなんですね〜。万全を期すならばこのDockerfileを自前でビルドでしょう。
Dockerfileをダウンロードしてしかるべきところに格納し、docker build 、もしくはdocker-compose.ymlに追記してdocker-compose buildするだけなんでまったく面倒ではありません。
でも公式イメージなんで、pullするだけでも大丈夫ですね。:smile:

docker-compose.ymlにphpMyAdminの定義を追加する

ではさっそく使ってみましょう。
たとえば、docker-compose.ymlでMySQLをこんな風に定義している場合

docker-compose.yml
# その他のコンテナの定義
 .
 .
 .

# MySQLコンテナ
mysql:
  image: mysql:5.7
  volumes:
    - "./mysql:/var/lib/mysql"
  environment:
    - MYSQL_ROOT_PASSWORD=password

これに、ちょちょいとphpMyAdminのコンテナを追加

docker-compose.yml
mysql:
  image: mysql:5.7
  volumes:
    - "./mysql:/var/lib/mysql"
  environment:
    - MYSQL_ROOT_PASSWORD=password

phpmyadmin:
  image: phpmyadmin/phpmyadmin
  environment:
    - PMA_ARBITRARY=1
    - PMA_HOST=mysql
    - PMA_USER=root
    - PMA_PASSWORD=password
  links:
    - mysql
  ports:
     - 8080:80
  volumes:
     - /sessions

蛇足:一応公式の指示どおりにcompose.ymlを書きましたがこのままだとdata volumeの残骸が増え続ける可能性があるので、sessionsは明示的にホストのディレクトリに結びつけた方いいかもしれません。たとえば

  volumes:
     - "./phpmyadmin/sessions:/sessions"

とか。ここではこのままいきます。

composeでコンテナ起動

docker-compose up -d

ブラウザでhttp://localhost:8080にアクセス

php.png

無事localhostでphpMyAdminが表示されました!

なにが素晴らしいって思い立ってからここまで到達するのに10分も経っていないということ。
PCやMacにMySQLのクライアント入れるよりお手軽ではないでしょうか。Docker以降、WEBサービスを手元で動作させるハードルが劇的に下がっていると感じます。

Dockerって素晴らしいですね〜。

furu8ma
なぜかレガシーシステムのモダナイゼーションを担当することが多いです。通称Dockerおじさん。最近podcastはじめました
https://wakateossan.github.io
Colorkrew
東京・秋葉原にあるIT企業、株式会社Colorkrew。 ”世界のシゴトをたのしくするビジョナリーカンパニー”をビジョンに掲げています。 管理職0(ゼロ)、階層0(ナシ)、 チーム力∞(無限大)の組織運営、バリフラットモデルを策定・導入。OpenWork(旧Vorkers)が選ぶ自由主義で個性を活かす企業、性格のいい会社に上位ランクイン!
https://www.colorkrew.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした