LoginSignup
21
35

More than 5 years have passed since last update.

macのdockerでLAMP環境を作る

Last updated at Posted at 2016-12-21

macでdockerを使ったLAMPの開発環境を作ったのでメモ

やりたいこと

dockerで「apache+php」のアプリコンテナ、mysqlのDBコンテナphpmyadminを入れるコンテナの3個のコンテナを作ります。

httpd_logo_wide_new.png PHP-logo.svg.png MySQL.svg.png

docker.png

前提

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

21
35
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
35