Dockerでphpの開発環境整備など(開発報告)
かねてからやらないとやらないと、とおもっていた、あいこんくらぶ ( https://iconclub.jp ) ・ぴこぴよ ( https://picopiyo.iconclub.jp ) の開発環境整備(改善)をいい加減やらねばなーと思っていたので、週末をつかってガッとやってしまったのでした。(これやらないといろいろと捨てられなかったりするので、、、)
そのときの作業のメモを残しておきます。
phpのDocker ImageをつかってDockerfileをつくる
まずはphpのDocker Imageをとってきます。公式のイメージ がありますが、利用バージョンや目的に応じていくつかの種類があります。今回は開発環境ウェブサーバ用としたいので、 Apacheとセットのものを使います。
最終的なアプリサーバのDockerfileはこんな感じ。
FROM php:7.0-apache RUN docker-php-ext-install pdo_mysql RUN a2enmod headers RUN a2enmod rewrite COPY config/php.ini /usr/local/etc/php/
MySQLをデータベースとして使いたいので pdo_mysql
をインストールします。pdo_mysql
が入っていないことに気づかずにずいぶん時間をつかってしまった...。
(こちらの記事を参考にしました: PDO MySQL driver not found · Issue #62 · docker-library/php · GitHub)
さらにさらに、Apacheで有効になっていないモジュールは有効にしてあげる必要があるので、a2enmod
をつかって有効にしたいモジュールを設定します。これをやらないと mod_rewrite
等が使えないのでした。
データベース周りと接続する
データベースにはMySQLを使いますが、MySQLまわりも公式イメージをつかいます。このイメージは各種環境変数を設定することで、ルートユーザーのパスワードを設定したり、ユーザーを作成したりすることができます。
MYSQL_USER
, MYSQL_PASSWORD
でユーザー名とパスワードを、 MYSQL_DATABASE
でデータベース名を設定しておくと、ユーザーとデータベースが1つずつ作成され、作成されたデータベースに対して GRANT ALL
権限でアクセスすることができます。開発環境として簡単にDBアカウントを用意できて便利。
最終的な docker-compose.yml
は概ねこんな感じ。これで docker-compose up
で開発環境が起動できるようになりました。
version: '3' services: app: build: . hostname: hoge.local container_name: app ports: - '8000:80' volumes: - ./app/:/var/www/html/ links: - db db: image: mysql:5.7 container_name: db ports: - "3306:3306" environment: MYSQL_ROOT_PASSWORD: piyo MYSQL_USER: user MYSQL_PASSWORD: piyo MYSQL_DATABASE: foo
もうちょっと様子を見て、これでよさそうならよしとしたいぞ。ではではー。