docker-composeでPHP環境を作成してみた
ちょっと仕事でPHPを使いそうな気がしてるので、その開発環境用にと思い数年ぶりにPHPの環境を作成。 せっかく作るなら、dockerとか利用して少しはモダンにやろうと思って、UbuntuにDockerをインストールしてからDocker-comporse経由でphp_infoを表示するところまでやってみたのでそのメモです。
Dockerのインストール
この辺はDockerの公式サイトの手順通りにやったので、すんなりといきました。
インストールコマンド群
$ sudo apt-get update $ sudo apt-get install apt-transport-https ca-certificates curl software-properties-common $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - $ sudo apt-key fingerprint 0EBFCD88 $ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" $ sudo apt-get update $ sudo apt-get install docker-ce
dockerのインストールの確認
docker -v
docker-comporseのインストール
この辺はDockerの公式サイトの手順通りにやったので、すんなりといきました。
インストールコマンド群
$ curl -L https://github.com/docker/compose/releases/download/1.15.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose $ sudo chmod +x /usr/local/bin/docker-compose
※ /usr/local/bin でPermision errorになった場合には sudo -i
でrootユーザに変更してから、curl コマンドを行う
docker-comporseのインストールの確認
docker-comporse -v
ここまで、docker環境が出来たので、次にnginx + PHP環境をDocker上に作成していく。
今回のフォルダ構成
├── docker │ ├── docker-compose.yml │ ├── nginx │ │ ├── Dockerfile │ │ └── server.conf │ └── phpfpm │ └── Dockerfile └── public └── index.php
docker-compose.yml の作成
nginxのコンテナとPHPのコンテナ(webというコンテナ名にしてる)の起動手順などを記載しておく
version: '2' services: nginx: build: ./nginx ports: - "80:80" volumes: - ../public:/var/www/html links: - web:web container_name: nginx web: build: ./phpfpm volumes: - ../public:/var/www/html container_name: web
実際の各コンテナのbuildの設定は、各コンテナのフォルダを用意しDockerファイルに設定する
nginxのDockerファイル
FROM nginx ADD server.conf /etc/nginx/conf.d/server.conf
nginxのポートの設定等の設定ファイルもDockerファイルと同じフォルダに配置する
server { listen 80 default; server_name _; root /var/www/html; index index.php index.html index.htm; charset utf-8; access_log off; error_log off; location / { try_files $uri $uri/ /index.php$is_args$args; } location ~ \.php$ { fastcgi_pass web:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
phpのDockerファイル
FROM php:fpm
実行される、index.php ファイルを用意する
<?php phpinfo();
ここまで、起動する準備が完了。
ここからは、 docker-compose.yml
が配置されてるディレクトリで実行する
dockerコンテナのイメージを作成する
docker-compose build
※ build時じゃないと、DockerファイルのADDコマンドとかが動作しないので、buildしておく
dockerコンテナの実行
docker-compose up -d
起動中のdockerコンテナ確認
docker-compose ps
起動中のdockerコンテナ停止と削除
docker-compose down
今回のサンプルのソース