シリーズ記事一覧
[PHP その0] Web系初心者だけど今後のためにも1から勉強してみる
[PHP その1] LAMP環境とは?
[PHP その2] 開発環境の構築とHello World
環境
| OS | docker | docker-compose |
|---|---|---|
| windows 10 Home 1809 | 18.03.0-ce,build 0520e24302 | 1.20.1, build 5d8c71b2 |
dockerとは
カーネルより上だけ仮想化する技術です。これまでのカーネルごと仮想化したハイパーバイザ型やホスト型の仮想化とは違い、コンテナ型の仮想化です(まああんまりこの辺はあんまり知らなくてもひとまずは作業には影響しないと思う)。カーネルまで仮想化しなくていいよねって需要が強くなってできたみたい。カーネルより上、つまり検証したいOS以上をdockerで構築するんですね。利点としては軽いってこと。カーネルまで仮想化されてるとどうしても1環境が重くなる。1コンテナで1ミドルウェアを構成することでいろんな環境を構築できるしコンテナの構成を書いたテキストファイルを共有するだけで別クライアントからでも簡単に環境を共有することができる。
docker-composeとは
1コンテナで1ミドルウェアを構成すると話しましたが、これを手動で管理するのは非常に煩わしいですよね。これを自動でやってくれます。具体的にはテキストでレシピを作っておくと、そのレシピに相当するコンテナ構成を構築してくれるということです。
Docker Toolboxの導入
以下のコマンドが実行できるようになったらDockerを使う準備は完了です。
docker run hello-world
インストール手順のリンク先を見て、上記コマンドが実行できるようになったら次の章に進みます。
ダウンロード:Get Docker Toolbox for Windows
インストール手順:windows 10 home で docker を導入するメモ
Docker-compoese
参考:Docker Composeを使ってLAMP環境を立ち上げる
どこかに作業ディレクトリを作成して
mkdir work
以下を実行
git clone https://github.com/naga3/docker-lamp.git
cd docker-lamp/
参考リンクだとそのまま起動するコマンド叩いてるけど、今はそのままだとエラーになります。
./work/docker-lamp/php/Dockerfileを以下の通り変更します。
FROM php:7.0-apache
COPY php.ini /usr/local/etc/php/
RUN apt-get update \
&& apt-get install -y libfreetype6-dev libjpeg62-turbo-dev libpng-dev libmcrypt-dev \
&& docker-php-ext-install pdo_mysql mysqli mbstring gd iconv mcrypt
そして以下を実行
docker-compose up -d
細かい構成については参考リンクを参照。
ここまでくると以下の2つのコンテナが動いているはずです。
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3243898fd41f dockerlamp_php "docker-php-entrypoi…" 21 hours ago Up 21 hours 0.0.0.0:80->80/tcp dockerlamp_php_1
3fedae96821c dockerlamp_mysql "docker-entrypoint.s…" 21 hours ago Up 21 hours 3306/tcp, 33060/tcp dockerlamp_mysql_1
0.0.0.0:80で動いていると書いてあります。
dockerが動いているIPは起動時の以下メッセージで確認してください。
## .
## ## ## ==
## ## ## ## ## ===
/"""""""""""""""""\___/ ===
~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ / ===- ~~~
\______ o __/
\ \ __/
\____\_______/
docker is configured to use the default machine with IP 192.168.99.100
For help getting started, check out the docs at https://docs.docker.com
上記でいうと、ブラウザで http://192.168.99.100/ を開いてphpinfo()のページが出たら成功です。
おっと、まだHello Worldが表示できていませんでした。
./html/index.phpを以下のように変更しましょう
<html>
<head>
<title>PHP Test</title>
</head>
<body>
<?php echo '<p>Hello World</p>'; ?>
</body>
</html>
更新を保存したら、ブラウザを更新してHello Worldの文字が出てきたら完了です。