LoginSignup
5
0

More than 5 years have passed since last update.

DockerComposeを使って手軽に開発環境を構築する+BindAddressの小話

Last updated at Posted at 2018-06-28

はじめに

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を使ってみたい人

実行方法

起動

  1. cloneまたはZipダウンロードする
    git clone https://github.com/tmasu/docker-compose-centos-php.git
    GitHub-tmasu/docker-compose-centos-php

  2. カレントディレクトリを移動
    cd docker-compose-centos7-php

  3. コンテナビルド
    docker-compose build

  4. コンテナ起動
    docker-compose up

SSHログイン

デフォルトのパスワードはrootになっています

ssh root@localhost -p 8022

MySQLログイン

mysql -u root

Slimのテストアプリ作成とビルトインwebサーバ起動

/var/www/html配下に作成すれば、ローカルのマウントされたフォルダ内のためローカルのエディタなどで直接編集することができます。

[app-name]は各自で書き換えください

slimでのアプリ作成とサーバ起動
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を使うと複数コンテナの管理が便利に

5
0
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
5
0