Edited at

Dockerで作るCodeIgniterローカル開発環境 入門編

More than 1 year has passed since last update.

こんばんは。公開がギリッギリになってしまいましたが、

この記事はCodeIgniter Advent Calendar 2017の9日目です。

去年のアドベントカレンダーは主催しておきながら技術ネタをほぼ何も書かなかったので、今年はゆっくり入門編から技術ネタを書きます。

開発をするにあたって、最初の1歩は開発環境を作る所です。

開発環境は $ php -S localhost:2017 とコマンドを叩いても良いですし、MAMPでもVagrantでも何でも構わないのですが、今回はDockerを使います。

CodeIngiterはzipファイルを解凍して置けばどこでも動くという簡単さなので、Dockerを触った事が無い方にはちょうど良い入門記事になるのではないかな、と思ってこの記事を書いています。

Dockerを触った事が無い方は、気軽にサッと試してみて下さい。


まずはCodeIgniterを準備

公式から CodeIgniter 3.1.6 のzipファイルを取ってきて展開します

$ cd ~/Desktop

$ wget https://github.com/bcit-ci/CodeIgniter/archive/3.1.6.zip
$ unzip 3.1.6.zip
$ cd CodeIgniter-3.1.6

で、ここからdockerコマンド1発で開発環境を作ります。

(Docker自体のインストールはここでは省きます。)


dockerコマンド実行

$ docker run -p 80:80 -d -v ${PWD}:/var/www/html/ --name codeigniter-local php:7.2-apache

php:7.2-apache のDockerイメージが手元に無い方は Unable to find image 'php:7.2-apache' locally というメッセージの後、ダウンロードが始まります。

このコマンドで何をしているかというと、



  • php:7.2-apache のDockerイメージを基に、 codeigniter-local というDockerコンテナを起動



    • -d オプションでバックグラウンド起動



  • コンテナの80番ポートと、ホスト(macOS等)の80番ポートを接続

  • 今居るホスト側の ~/Desktop/CodeIgniter-3.1.6 とコンテナ側の /var/www/html を共有

という具合です。

複雑な事はしていません。

PHP5.6が良ければ、 php:5.6-apache のDockerイメージを使って下さい。

コンテナが立ち上がれば、 docker ps コマンドで以下の様に状態を確認できます。

$ docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
44c603b35a00 php:7.2-apache "docker-php-entryp..." 5 minutes ago Up 5 minutes 0.0.0.0:80->80/tcp codeigniter-local

http://localhost ( http://0.0.0.0:80 )がコンテナの80番ポートに繋がっているのが確認できますね。

ブラウザでアクセスすれば、見慣れたCodeIgniterのウェルカムページが見えます。


Dockerコンテナを使う

コンテナ立ち上げたときに codeigniter-local という名前を付けたので、それを使ってコマンドを叩きます。



  • docker stop codeingiter-local で停止


  • docker start codeingiter-local で起動


  • docker logs codeigniter-local でログ確認



    • docker logs -tf codeigniter-local でログ監視




  • docker rm codeigniter-local でコンテナ削除(停止している時のみ)

ここでは簡単な紹介までにしておきます。

Dockerはドキュメントが充実しているので、色々ググってみて下さい。


おわりに

いかがでしたか?

仕事ではdocker-composeを使ったりData volumeの仕様に頭を捻ったり、結構Dockerを使ってみています。

Vagrantを使った開発環境の頃よりも素早く作って壊す事が出来て、CircleCI2.0等への応用も効くので、なかなか勉強する甲斐があります。

今回はそんな自分が、まだ「Dockerよくわからんけど、入門記事無いかな。出来ればよく知ってる技術を使ったカンタンなやつ」と思ってた頃に欲しかった記事を書いてみました。