ワンコマンド開発環境構築を求めて。。。
お久しぶりです。開発部の高見です。
一から手作業でローカル開発環境を作ることにツラさを覚え出した今日この頃。
その苦痛から解放してくれたのがDockerでした。。。
ということで、Dockerによる開発環境構築について、個人的に一番しっくり来たものを紹介したいと思います。

用意するもの
・Docker for Mac
ディレクトリ構成
1 2 3 4 5 6 7 8 9 10 11 12 13 |
. ┣ docker-compose.yml // Docker Composeの設定ファイル ┃ ┣ docker-file/ ┃ ┗ web/ // Webサーバ用ディレクトリ ┃ ┣ Dockerfile ┃ ┗ php.ini // PHP設定ファイル ┃ ┣ docker-entrypoint-initdb.d/ // DBセットアップ用ディレクトリ ┃ ┗ volumes/ ┗ web/ ┗ html/ // ソース置き場 |
各種ディレクトリ・ファイルの説明
./docker-file/web/Dockerfile
(1) PHPの公式イメージを使います。(バージョンはご自由に。 php:[バージョン]-apache)
(2) 「docker-php-ext-install」でPostgreSQL関連のPHPエクステンションをインストールします。
(3) PHP設定ファイルをコンテナにコピーします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
# (1) FROM php:7.0-apache RUN apt-get update RUN apt-get install -y vim less # (2) RUN set -ex apk --no-cache add postgresql-dev libpq-dev RUN apt-get install -y libpq-dev \ && docker-php-ext-install pdo pdo_pgsql pgsql mbstring # (3) COPY ./php.ini /usr/local/etc/php/ |
./docker-file/web/php.ini
PHP設定ファイルになります。
log_errors、error_log、error_reportingを設定しないと、エラーログが出力されません。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
[Core] display_errors = On error_reporting = E_ALL error_log = /var/log/apache2/error.log log_errors = On [Date] date.timezone = 'Asia/Tokyo' [mbstring] mbstring.language = Japanese mbstring.internal_encoding = auto mbstring.http_input = auto mbstring.http_output = auto mbsting.encoding_translation = Off mbstring.detect_order = auto |
./docker-entrypoint-initdb.d/
初回起動時に実行する.shや.sqlを置く用のディレクトリです。
DBやテーブルを作成する.sqlや.shを置いておくと便利です。
./volumes/web/html/
ソースを置く用ディレクトリです。
./docker-compose.yml
(1) ./docker-file/web/Dockerfileからイメージを作成します。
(2) コンテナ側の/var/www/htmlとホスト側の./volumes/web/htmlを共有
(3) PostgreSQLの公式イメージを使用します。
(4) コンテナ側の/docker-entrypoint-initdb.dとホスト側の./docker-entrypoint-initdb.dを共有
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
version: '3' services: web: build: ./docker-file/web/ <- (1) ports: - 8080:80 volumes: - ./volumes/web/html:/var/www/html <- (2) depends_on: - db db: image: postgres:9.3 <- (3) ports: - 5433:5432 volumes: - ./docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d <- (4) |
環境を構築する
コンテナをビルド&起動
起動(ビルドされていない場合、ビルドも行ってくれる)
1 |
$ docker-compose up -d |
ビルドのみ行いたい場合は、以下のコマンドになります。
1 |
$ docker-compose build |
ブラウザでアクセス
./volumes/web/html/以下にindex.phpを置き、
「http://localhost:8080」にアクセスして、画面が表示されれば完成です。
終わりに
今回はDockerによる開発環境構築方法を紹介しました。
ローカル開発環境構築に飽きてきた方や嫌になってきた方など、
ぜひ、Dockerでお手軽に環境を作ってみてください。
キー・ポイントでは新しい技術が好きな人を募集しています。