新しいマシンもらったときだけのことだけど、
PHPのWEB開発環境をローカルで構築するの面倒くさかった。
Apache入れてPHP入れてMySQL入れて・・・
そのうちXAMPP使うようになって楽だけど・・・
「本番環境のバージョンに合わせたい」や「最新バージョンの機能を使いたい」など
普段の開発環境とは異なるサーバ構成を試したいときがあるよね!
そんなときはDocker!
基本的には
docker-compose.yml
作ってDockerのターミナル立ち上げて
docker-compose up -d
だけで開発環境構築完了!みたいな感じ。
目次
インストール
MyMachineはWindows10 HOMEエディションだから
Docker Toolboxインストール
https://docs.docker.com/toolbox/toolbox_install_windows/
DockerQuickstartTerminalでGO!
## .
## ## ## ==
## ## ## ## ## ===
/"""""""""""""""""\___/ ===
~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ / ===- ~~~
\______ 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
Start interactive shell
S@DESKTOP-0123456 MINGW64 ~
$
docker-compose.yml作成
作業ディレクトリを作成
C:\Users\S\docker\sample
※ユーザのホームディレクトリ以下に作成するが吉。
Docker Hub(https://hub.docker.com/)でいろんなImageを配布してるよ。
例えば、PHPのオフィシャル(>https://hub.docker.com/_/php/)から「7.2-apache」
C:\Users\S\docker\sample\docker-compose.yml
version: '3'
services:
web:
image: php:7.2-apache
ports:
- "80:80"
volumes:
- ./html:/var/www/html
コンテナ起動
// カレントディレクトリ確認
$ pwd
/c/Users/S
// docker-compose.ymlのあるディレクトリに移動
$ cd docker/sample
// 全コンテナ起動
$ docker-compose up -d
Creating network "phpapache_default" with the default driver
Creating phpapache_web_1 ...
Creating phpapache_web_1 ... done
// 起動コンテナ確認
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d2d0f997f2b2 php:7.2-apache "docker-php-entryp..." 15 seconds ago Up 15 seconds 0.0.0.0:80->80/tcp phpapache_web_1
ディレクトリ構成
C:\Users\S\docker ┗sample ┣html ┗docker-compose.yml
【HTTPアクセス】
// IP確認
$ docker-machine ip
192.168.99.100
http://192.168.99.100
Forbiddenだ。。。
※コンテンツが無いからね!
【index.html作成】
C:\Users\S\docker\sample\html\index.html
Hello,Docker!
【コンテナ再起動】
コンテナ全停止
$ docker-compose stop
コンテナ全起動
$ docker-compose up -d
http://192.168.99.100
【終了】
コンテナ全停止
$ docker-compose stop
コンテナ強制全削除
$ docker-compose rm -f
$ exit
お疲れ様でした。
※windowsシャットダウン時にVirtualBox Interfaceが邪魔するけど
タスクマネージャーで強制終了でいいか。。。
他にできること
※複数のコンテナを連携させることもできるよ。
MySQLコンテナと連携すればLAMP環境完成!
※Dockerfileを書けばベースImageに手を加えることもできるよ。
例えば、PHPにオプションを設定するとか
※ベースとなるImageで立ち上げてから各種アプリケーションをインストールできるよ。
ImageのディストリビューションによるけどLinuxコマンド使えるからね。
※改造したヤツをImageとして保存しておけば再利用できるよ。
docker commit
※複数のマシンを別IPで立ち上げることができるよ。
docker-machine create