最近、Dockerを触ってみたかったのですがいまいちDockerがよく分かってなかったのでLaravel5の初期画面を出せるところまでやってみました。
環境
- Windows10
- Docker Toolbox(Docker For Windowsではないです)
前提
特定のディレクトリにLaravel5のプロジェクトが存在していることを前提としています。(インストール後の初期状態が良し)
また、まだわかってないことが多いので関係ないことやってると思います。
今回利用したのは、https://github.com/geshan/docker-laravel-alpine
とhttps://github.com/danielmccoy/alpine-nginx-php-laravel
です。
初心者がよく間違えそうなこと
これはすでに自分がdockerに多少の知識を持っていたので正しく進めましたが、おそらく初心者の場合ここでよくわからなくなるんじゃないかと思ったので一応。
dockerコマンドとdocker-machineコマンドは何が違うの
簡単に言えば、docker-machineコマンドはvagrantコマンドみたいにwindows側から打てるコマンドのことです。
そしてdockerコマンドはその仮想環境上で打てるコマンドです。
なので、dockerコマンドを打つためには仮想環境に入る必要があります。→エイリアスっぽいので入らなくても打てるようになってるみたいです
これは先にdocker-machineが起動している必要があるのですが、
docker-machine ssh default
で、対象の仮想環境に入ることができます。
Kitematicを起動しておく
Kitematicを起動すると、dockerが入った仮想環境が起動されるので、先に立ち上げておきます。
また、起動したらipを調べておきます。
コマンドプロンプトを開いてdocker-machine ip
でipを知っておきます。
> docker-machine ip
192.168.99.100
dockerイメージの取得
先にgeshan/laravel-alpine:php7のイメージを取得しておきます。ちなみに、このlaravel-alpineイメージはnginxも起動していないので実際のところ、composerを実行したりとか、artisanコマンドを実行するとかしかできないです。
docker pull geshan/laravel-alpine:php7
dockerイメージを利用して起動
今回は、初期状態は出来上がっていたlaravel5プロジェクトだったのですが、色々忘れてたのでgeshan/laravel-alpineを利用してコマンドを叩きました。
-vオプションはディレクトリのマウントのオプションです。初期状態で、仮想環境がCドライブを/cでマウントしてくれているのでそれを利用します。
指定するディレクトリは/var/wwwですが、このあたりはリポジトリの説明に書いてあります。
> docker run -v /c/Users/fagai/product/laravel5:/var/www geshan/laravel-alpine:php7 "composer install --prefer-dist"
> docker run -v /c/Users/fagai/product/laravel5:/var/www geshan/laravel-alpine:php7 "php artisan key:generate"
これでとりあえず手前の処理が終わったので、実際にサーバーを立ててみます。
サーバーのイメージはdanielmccoy/alpine-nginx-php-laravelを利用しました。
> docker run -p 8000:80 -v /c/Users/fagai/product/laravel5:/var/www -t danielmccoy/alpine-nginx-php-laravel
これでサーバーが起動するので、確認してみましょう。
なお、-pオプションはポートフォワーディングの設定で、先にホスト側のポートを指定し、次にコンテナ側のポートを指定します。
これであとは先に調べていたipがあると思うので、それで立ち上げてみます。
私と同じ状況であれば、http://192.168.99.100:8000/です。
最後に
以上ですね。意外とさくっと用意できたので可能性を感じ始めました。
dockerfileも対象のリポジトリに存在するので、自分自身でdockerfileを作るときも簡単なのではと感じます。
コメント
初心者のうちはkitematicのGUIでとりあえず使ってみて、慣れてきたらdocker-machineなどのコマンドを覚えていくほうがいいかもしれません。
この記事ではkitematicはdockerホストの起動にしか使ってないようですが、ポートとマウントの設定をGUIで設定できると思います。
macだと
$ docker-machine start default
$ docker-machine env default
$ eval “$(docker-machine env default)”
とすればsshログインしなくてもdockerコマンドが使えるようになるのですが、
windowsの場合は違うんでしょうか?
GUIで最初やっていたわけなのですが、どうもコンテナによっては起動時に失敗してしまうようなので、仕方なくコマンドを使っています。
どうやらdockerコマンドは最初使えなかった気がしたのですが問題なく使えそうですね、evalはwindowsだと叩けませんけど。