こんばんは。公開がギリッギリになってしまいましたが、
この記事は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よくわからんけど、入門記事無いかな。出来ればよく知ってる技術を使ったカンタンなやつ」と思ってた頃に欲しかった記事を書いてみました。