DockerでPHPの開発環境を作るお話

公開日:2019-07-31
最終更新:2019-07-31

目的

PHPでの開発環境を作るにあたって、Docker環境を作り、VSCodeのRemote Container機能を使って開発をしたく思いました。
そのための備忘録みたいなものです。

今回はPHPの公式Dockerイメージ(apache)にDBはPostgreSQLを使うという形の構成です。

ファイルの中身とか

ファイルは上記のような構成です。

ファイル(ディレクトリ) 用途
backup Docker内とPCのデータ交換用ディレクトリ
php/src WebサーバのDocument Rootに展開されるファイル
php/Dockerfile phpの公式Dockerファイルに必要なあれやこれやを追加したもの
.devcontainer.json VSCodeでRemote Container機能を使うときの設定
docker-compose.yml これが一番重要な DockerComposerの設定ファイル
postgresql.env PostgreSQLの初期設定情報

docker-compose.yml

version: '3'  

services:  
  db:   
    image: postgres:latest  
    env_file: ./postgresql.env  
    volumes:  
      - "db_data:/var/lib/postgresql/data"  
    networks:  
      - local_dev  
    ports:  
      - 5432  

  web:  
    volumes:  
      - "db_data:/var/lib/postgresql/data"  
      - "app_data:/var/www/html"  
      - "./backup:/mnt/backup"  
    build: ./php/  
    networks:  
      - local_dev  
    ports:  
      - 80:80  

networks:  
  local_dev:  

volumes:  
  app_data:  
  db_data:  

こちらではサービスとしてwebとdbを用意しています。
dbは単純にpostgresqlのいイメージにpostgresql.envの環境変数を設定する形です。
web側のvolumesにapp_data, db_dataとそして ./backupを割り当てることで、ローカルPCとのやり取りをできるようにしています。

postgresql.env

POSTGRES_PASSWORD=postgres  
POSTGRES_INITDB_ARGS=--no-locale -E=UTF-8  

このファイルでpostgresユーザのパスワードとinitdbのオプションを設定しています。

Dockerfile

# 日本語のランゲージ設定は↓を参考にしました  
# https://qiita.com/tailak/items/77b90a4df07e4f6a1fc2  
# https://qiita.com/uni-3/items/4edc9875f0449cab7421  

FROM php:7.2-apache  
RUN apt update; apt install git postgresql-client postgresql-server-dev-11 locales \  
    libfreetype6-dev libjpeg62-turbo-dev libpng-dev libmcrypt-dev unzip -y  
RUN echo "ja_JP.UTF-8 UTF-8" > /etc/locale.gen && \  
    locale-gen && update-locale LANG=ja_JP.UTF-8  
RUN a2enmod rewrite  
RUN mv /etc/apache2/apache2.conf /etc/apache2/apache2.conf.bak && \  
    sed -e 's/AllowOverride All/AllowOverride None/' /etc/apache2/apache2.conf.bak > /etc/apache2/apache2.conf   

RUN docker-php-ext-install mbstring pdo pdo_pgsql gd iconv   
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer  

ENV PGHOST=db  
ENV LC_ALL=ja_JP.UTF-8  
COPY src/ /var/www/html/  

phpの公式Dockerイメージに加えて、いくつか必要そうなものを加えています。
またランゲージの設定および、Apacheでmod_rewriteを使用可能にし、 .htaccess での上書きも可能にしています。

.devcontainer.json

// See https://aka.ms/vscode-remote/devcontainer.json for format details.  
{  
    "dockerComposeFile": "docker-compose.yml",  
    "service": "web",  
    "workspaceFolder": "/var/www/html",  
    "extensions": []  
}  

VSCodeが作成したものに修正を加えました。
修正点は一点でworkspaceFolderとなります。

VSCodeの設定

VSCodeの設定はまだ煮つめていないです_| ̄|○
そのうちちゃんと調べておきたいです。特にデバッグとか・・・・

記事が少しでもいいなと思ったらクラップを送ってみよう!
0
+1
@saitooooの技術ブログ

よく一緒に読まれている記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう
目次をみる

技術ブログをはじめよう

Qrunch(クランチ)は、ITエンジニアリングに携わる全ての人のための技術ブログプラットフォームです。

技術ブログを開設する

Qrunchでアウトプットをはじめよう

Qrunch(クランチ)は、ITエンジニアリングに携わる全ての人のための技術ブログプラットフォームです。

Markdownで書ける

ログ機能でアウトプットを加速

デザインのカスタマイズが可能

技術ブログ開設

ここから先はアカウント(ブログ)開設が必要です

英数字4文字以上
.qrunch.io
英数字6文字以上
ログインする