あらまし
開発は自社でやるけれど、運用は協力会社にお任せ!といったシーンが多くあると、 Dockerをはじめとしたコンテナ技術が、自分の開発業務にどう役立つかのイメージができないことがあります(ありました)。
そこで、開発・設計や技術検討、小さめのプロダクトでどう役立つかという視点で、Dockerを紹介します。
巷のウェブサービスのお試し
巷にはたくさんのウェブサービスが転がっていて、試してみたくてもなかなか忙しくて環境構築ができず試せないことが多いです。
コンテナが使えると、パッと環境作って試して、パッと環境ごと捨てて、何事もなかったかのようにいつもの業務に戻ることができます。
コンテナは手元の環境と独立しているので、手元のMySQLやPHPのバージョンの設定にも全く影響がないので、3秒くらいですんなりお別れできるようになってます。
WordPressの例
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分もかかりません。
さらに、お試しがおわって環境を捨てたいときは、 docker-compose down
をshellで実行すれば、WordPressもMySQLもApacheも丸ごと消えてくれるので安心。
コンテナは手元の環境と独立しているので、手元のMySQLやPHPのバージョンの設定にも全く影響がないので、3秒くらいですんなりお別れできるようになってます。
WordPress以外を試すとき
大体の有名なサービスは誰かがdocker-compose.ymlを作って置いてあることが多いです。
- WordPress: https://docs.docker.com/compose/wordpress/
- Django: https://docs.docker.com/compose/django/
- Joomla: https://hub.docker.com/r/bitnami/joomla/
- Dokuwiki: https://hub.docker.com/r/bitnami/dokuwiki
- TensorFlow+TensorBoard: https://qiita.com/Nersch/items/7f1f5a3c780fab3ae1e4
- その他いろいろ: https://docs.docker.com/compose/
まとめ
最近話題のサービスを試したり、開発環境構築するときにぜひ使ってみてください!