macでdockerを使ったLAMPの開発環境を作ったのでメモ
#やりたいこと
dockerで「apache+php」のアプリコンテナ、mysqlのDBコンテナphpmyadminを入れるコンテナの3個のコンテナを作ります。
| | | |
|---|---|---|---|---|---|表示が省略されている列であれば、アラインメント行は好きに書いてよい。|
#前提
DockerHubのアカウントを作成しておく
DockerHubとはなんぞやとかはこちらを参考に
http://knowledge.sakura.ad.jp/tech/2210/
#1.dockerのインストール
DockerToolboxというのがあってVirtualboxとか一式が入っていて簡単に環境設定できるツールを入れますが、OSX Sierraだとインストーラーが途中で止まって入りませんでした。
https://www.docker.com/products/docker-toolbox
なので、DockernとVirtualBoxを入れます。
https://docs.docker.com/docker-for-mac/
https://www.virtualbox.org/wiki/Downloads
#2.アプリケーションコンテナ(apacheとphp)の作成
###1.centosイメージのダウンロード
バージョン7もありますが、今回は6にしました。
$ docker pull centos:6
###2.ダウンロードしたイメージの確認
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos6 latest xxxxxxxxxxx 12 days ago 611.9 MB
###3.コンテナを作成して起動
$ docker run -it --name app -p 8080:80 -v /Users/xxxx/source:/share centos:latest
※-nameでコンテナ名をつける。
※-vでホストとコンテナの共有フォルダを決める。
※-pでポートフォワード(今回はホストPCのブラウザから8080で接続するとコンテナへ80ポートに変換して渡す)
###4.コンソールでログイン
$ docker exec -it app bash
ここからは通常のcentosと一緒。apacheとphpをインストールする(手順割愛)
###5.接続確認
ホストPCのブラウザから
http://localhost:8080
##3.apacheとphpを入れたイメージを作る
コンテナを削除した際にせっかく設定した環境がなくなるので、imageを作成したdockerHubにおいておく
###1.起動しているコンテナIDを確認
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
xxxxxxxxx centos6 "bash" 11 days ago Up 4 days 0.0.0.0:8080->80/tcp apps
###2.コンテナからイメージの作成
$ docker commit (コンテナID) (DockerHubユーザ名)/(イメージ名):(バージョン)
###3.コンテナの停止と削除
$ docker stop (コンテナID)
$ docker rm -f (コンテナID)
###4.古いイメージの削除
ダウンロードしてきたcentosのイメージが不要であれば削除
$ docker rmi (イメージID)
作成したイメージからのコンテナはまだ起動しないでおく
※mysqlコンテナを作成した後に接続情報を付加して起動するため
##4.docker hubへimageをアップロード
###1.イメージをタグつけ
$ docker tag (イメージID) (DockerHubユーザ名)/(イメージ名):(バージョン)
###2.docker hubへpush
ログイン
$ docker login
ログインユーザの情報確認
$ docker info
push!
$ docker push (DockerHubユーザ名)/(イメージ名):(バージョン)
##5.mysqlコンテナの作成
###1.mysqlイメージのダウンロード
$ docker pull mysql
###2.コンテナ作成と起動
アプリコンテナ同様に起動。起動時にmysqlのパスワードを設定
$ docker run -it --name mysql -e MYSQL_ROOT_PASSWORD=password -d mysql:latest -p 3906:3306
※注意! mysqlのデータは永続化されないのでバックアップを行うこと。docker runでコンテナ作り直すとデータが初期化されます。
もしくは、-vでボリュームマウントするかです。
http://qiita.com/74th/items/41393f506d223850f2c3
##6.phpmyadminの作成
###1.phpmyadminイメージのダウンロード
$ docker pull phpmyadmin/phpmyadmin
###2.コンテナの作成と起動
$ docker run --name phpmyadmin -d -e PMA_HOST=mysqlのIP -p 8090:80 phpmyadmin/phpmyadmin
作成したmysqlのIPを指定して作成・起動
http://localhost:8090
でアクセス確認
##7.appサーバとdbサーバの接続
###1.アプリコンテナをDBにリンクさせて作成と起動
docker run -it --name app --link mysql:latest -d -p 8080:80 -v /Users/xxxx/source:/share centos:latest
--linkでmysqlとリンクさせて起動
###2.接続確認
アプリコンテナにログインしてmysqlコマンドから接続確認
$ docker exec -it app bash
###3.コンテナの起動状態を確認
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
xxxxxxx phpmyadmin/phpmyadmin "/run.sh phpmyadmin" 11 days ago Up 4 days 0.0.0.0:8090->80/tcp phpmyadmin
xxxxxxx user/centos6_httpd_php54:1.0 "bash" 11 days ago Up 4 days 0.0.0.0:8080->80/tcp cmsapps
xxxxxxx mysql:latest "docker-entrypoint.sh" 12 days ago Up 4 days 3306/tcp mysql
次回からはmysql→phpmyadminもしくはcentosの順でdocker startで起動すればOK!
#参考サイト
http://www.atmarkit.co.jp/ait/articles/1408/26/news038.html
http://knowledge.sakura.ad.jp/tech/2210/
http://qiita.com/74th/items/41393f506d223850f2c3