ほねっとのぶろぐ

アニメとAndroidが好きなほねっとのブログです。

開発者がDockerを使うメリット

f:id:aftercider:20190316234633p:plain

あらまし

開発は自社でやるけれど、運用は協力会社にお任せ!といったシーンが多くあると、 Dockerをはじめとしたコンテナ技術が、自分の開発業務にどう役立つかのイメージができないことがあります(ありました)。

そこで、開発・設計や技術検討、小さめのプロダクトでどう役立つかという視点で、Dockerを紹介します。

巷のウェブサービスのお試し

巷にはたくさんのウェブサービスが転がっていて、試してみたくてもなかなか忙しくて環境構築ができず試せないことが多いです。

コンテナが使えると、パッと環境作って試して、パッと環境ごと捨てて、何事もなかったかのようにいつもの業務に戻ることができます。

コンテナは手元の環境と独立しているので、手元のMySQLやPHPのバージョンの設定にも全く影響がないので、3秒くらいですんなりお別れできるようになってます。

WordPressの例

f:id:aftercider:20190316234338p:plain

WordPressはPHPで開発されており、データベース管理システムとしてMySQLを利用している。
そのため動作環境として、最低でも以下を構築する必要がある。

- Apache(Webサーバーソフトウェア)
- MySQL(データベース)
- PHP(プログラミング言語)

Dockerを使わない一般的な構築手順

XAMPPを使ってローカル環境にWordPressをインストールする方法

  • ApacheをまずOSにいれる(多くの場合XAMPP)
  • PHPの指定バージョンが使えるように環境を設定する
  • ファイアーウォールの設定を変更する
  • MySQLをインストールする
  • MySQL上に、WordPress用のDBを作る
  • WordPressをApacheのフォルダにおく
  • MySQLのDB・ユーザー・パスワード・ホストを設定する
  • ブラウザでApacheで解放されているポートにアクセスする

っていう手順を、一つ一つミスがないように実施する必要があります。

また、ApacheのバージョンやMySQLのバージョンについて、知識を持って気をつけないと他の開発環境を汚染してしまいます。

さらに、お試しが終わった後にアンインストールする際に、Apache・MySQL・WordPress・ファイアーウォールの設定などを全て元に戻す必要があってとても大変です。(そして多くの場合、戻すほうが大変)

学生時代、言われるがままにXAMPPいれて、環境を戻せずOS再インストールした記憶があります。

といった感じで、ただWordPressのCMSの触りごごちや見た目を試してみたいだけなのに、かなりのリスクと手間をかける必要が出てきてしまいます。

Dockerを使う方法

  • Dockerを入れる https://www.docker.com/
  • どっかに適当なフォルダを作る
  • そのフォルダに以下をコピペしたdocker-compose.ymlというファイルを作る
  • shellでそのフォルダに入って、 docker-compose up -d を実行
  • ブラウザでlocalhost:8000にアクセスする
version: '3.3'

services:
   db:
     image: mysql:5.7
     volumes:
       - db_data:/var/lib/mysql
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: somewordpress
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: wordpress

   wordpress:
     depends_on:
       - db
     image: wordpress:latest
     ports:
       - "8000:80"
     restart: always
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: wordpress
       WORDPRESS_DB_NAME: wordpress
volumes:
    db_data: {}

これだけで、WordPressを以下のように試せるようになります。

Dockerが入っている環境だったら、1分もかかりません。

f:id:aftercider:20190316234020p:plain
wordpress

さらに、お試しがおわって環境を捨てたいときは、 docker-compose down をshellで実行すれば、WordPressもMySQLもApacheも丸ごと消えてくれるので安心。

コンテナは手元の環境と独立しているので、手元のMySQLやPHPのバージョンの設定にも全く影響がないので、3秒くらいですんなりお別れできるようになってます。

WordPress以外を試すとき

大体の有名なサービスは誰かがdocker-compose.ymlを作って置いてあることが多いです。

まとめ

最近話題のサービスを試したり、開発環境構築するときにぜひ使ってみてください!