はじめに
PHPのSlimというフレームワークを使って開発するにあたり
Dockerで環境を構築した方が自由度が高くていいよねということで、
その実現にあたり残しておきたいことや注意点などをまとめました。
参考になれば幸いです。
概要
docker-composeを使って「CentOS7+PHP+MariaDB」の環境構築を気軽にできるようにする
実行環境
項目 | 詳細 |
---|---|
機種 | MacBook Pro (Retina, 15-inch, Mid 2015) |
OS | macOS Sierra(10.12.6) |
Docker | 17.12.0-ce |
DockerとDockerComposeインストールの参考:MacにDocker
構築する環境
バージョン
システム | バージョン | Docker Port | Published Port |
---|---|---|---|
CentOS | 7(Latest) | ||
Apache | 2.4.6 | 80 | 8081 |
SSHD | 7.4 | 22 | 8022 |
PHPのビルトインwebサーバ | 8080(起動時オプションによる) | 8082 | |
PHP | 7.1(yumでのLatest) |
ボリューム
Dockerはコンテナを停止するとデータは残らない
そのため、永続させたい場合にはローカルフォルダをマウントしておく必要があります。
また、開発にあたってはサーバにログインしなくても
気軽にエディタを使って編集できるようにという意図もあります。
Docker Folder | Local Folder |
---|---|
/var/www/html | ~/data-html |
この記事の対象
- dockerで気軽に環境のビルド・リビルドを繰り返したい人
- docker-composeを使ってみたい人
実行方法
起動
-
cloneまたはZipダウンロードする
git clone https://github.com/tmasu/docker-compose-centos-php.git
GitHub-tmasu/docker-compose-centos-php -
カレントディレクトリを移動
cd docker-compose-centos7-php
-
コンテナビルド
docker-compose build
-
コンテナ起動
docker-compose up
SSHログイン
デフォルトのパスワードはrootになっています
ssh root@localhost -p 8022
MySQLログイン
mysql -u root
Slimのテストアプリ作成とビルトインwebサーバ起動
/var/www/html配下に作成すれば、ローカルのマウントされたフォルダ内のためローカルのエディタなどで直接編集することができます。
[app-name]は各自で書き換えください
cd /var/www/html/
composer create-project slim/slim-skeleton [app-name]
cd [app-name]
php -S 0.0.0.0:8080 -t public public/index.php
上記の実行後にブラウザで下記のURLにアクセスするとページが表示されます。
http://localhost:8082/
サーバ上のファイルを直接編集
docker-compose-centos7-php
配下のdata-htmlというフォルダ内を編集することで
サーバ内の/var/www/html配下を直接編集することができます。
注意
BindAddressについて
PHPのビルトインwebサーバを起動する際に、
最初はSlimの公式ドキュメント通りに下記のようにしていたのですが、
これでアクセスしてもエラーページが出るのみでアクセスすることはできません。
php -S localhost:8080 -t public public/index.php
アクセスするためには下記のようにする必要があります。
php -S 0.0.0.0:8080 -t public public/index.php
これはBindAddressの指定となり、サーバがどのアドレスを指定された時に
アクセス受け付けるのかということを指定するためのものになります。
-
localhost
とすると127.0.0.1
となりサーバ内からのアクセスのみ受け付けます。 -
0.0.0.0
とすると全てのアクセスを受け付けます。
参考
今回の記事作成にあたり参考にさせていただいたページ
Bind Addressの意味がようやく分かった(κeenのHappy Hacκing Blog | Lispエイリアンの狂想曲)
Docker コマンドチートシート
Docker composeことはじめハンズオン
docker-composeを使うと複数コンテナの管理が便利に