LoginSignup
11
8

More than 5 years have passed since last update.

dockerでCakePHPの開発環境を構築する

Last updated at Posted at 2016-11-10

目的

ローカル環境で簡単にCAKEPHP3での開発が始められるようにする!

まずはmysqlのDBサーバコンテナを作成

まずは、my.confを作って適当な場所に設置します。
デフォルトで文字コードがlatin何とかってのになっているのでutf8に変更をします。

my.cnf
[mysqld]
character-set-server=utf8

このmy.cnfファイルはdocker上のmy.cnfがあるべき場所に共有されるようにマウントしたい!
なので、下のコマンドでコンテナを立ち上げる
-eオプションでrootのパスワードも[root]と設定してます。

docker run --name mysql -v {my.confを置いたディレクトリパス}:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7

実はこのままだと、phpからmysqlからアクセスするときにホストで引っかかって落ちてしまうので
コンテナに入ってアクセス権限のあるユーザを作ります。
下記コマンドで入って

docker exec -it  mysql bash

後はmysql.userテーブルにユーザを追加します。
今回は下記のように追加。dockerで生成されるコンテナのIPは172から始まるようなのでそれを設定

Host User
172.% cake

続いてWebサーバの作成です。

Webサーバ用のコンテナ

イメージはukt1113/cake3を使います。
(cakephpに必要なPHPエクステンションとmod_rewriteを有効化して、composerでcakephpのインストールをしています。詳細は最下部のdockerfile参照)

下記コマンドでcake3がインストールされたコンテナを作成します。
php.iniとソース設置用ディレクトリはコンテナにマウントします。

docker run -idt -v {ローカルのsrcを置くディレクトリパス}:/var/www/html -v {ローカルのphp.iniを置くディレクトリパス}:/usr/local/etc/php -p 20080:80 --link mysql:mysql --name cake ukt1113/cake3 "/bin/bash"

コンテナを起動してもまだapacheが起動してないので、
コンテナに入って

docker attach cake 

アパッチを起動する

apache2ctl start

最後にhttp://localhost:20080/cake/index.phpにアクセスして
緑色のチェックが全てついていれば準備完了

ですが、Databaseがまだ×がついているはず!
ローカルのsrcを置くディレクトリ/cake/config/app.php
のデータソースを設定した後リロードするとDatabaseにもチェックがついているはず!

Host username Database
mysql cake(さっき登録したやつ) 事前に何か登録しておいてそれを指定

cakeをインストールしたDockerファイル

FROM php:7.0-apache
MAINTAINER ukky <ukito.shi@gmail.com>

RUN apt-get update

# Install bz2
RUN apt-get install -y libbz2-dev
RUN docker-php-ext-install bz2

# Install mbstring
RUN docker-php-ext-install mbstring

# Install mcrypt
RUN apt-get install -y libmcrypt-dev
RUN docker-php-ext-install mcrypt

# Install intl
RUN apt-get install -y libicu-dev
RUN pecl install intl
RUN docker-php-ext-install intl

# Install PDO
RUN docker-php-ext-install pdo_mysql


# Install composer
## Register the COMPOSER_HOME environment variable
ENV COMPOSER_HOME /composer
## Add global binary directory to PATH and make sure to re-export it
ENV PATH /composer/vendor/bin:$PATH
## Allow Composer to be run as root
ENV COMPOSER_ALLOW_SUPERUSER 1
## Setup the Composer installer
RUN curl -o /tmp/composer-setup.php https://getcomposer.org/installer \
  && curl -o /tmp/composer-setup.sig https://composer.github.io/installer.sig \
  && php -r "if (hash('SHA384', file_get_contents('/tmp/composer-setup.php')) !== trim(file_get_contents('/tmp/composer-setup.sig'))) { unlink('/tmp/composer-setup.php'); echo 'Invalid installer' . PHP_EOL; exit(1); }"
RUN php /tmp/composer-setup.php --no-ansi --install-dir=/usr/local/bin --filename=composer --version=${COMPOSER_VERSION} && rm -rf /tmp/composer-setup.php

# Install git
RUN apt-get install -y libcurl4-gnutls-dev libexpat1-dev gettext libz-dev libssl-dev
RUN apt-get install -y git

# Install cakephp
RUN cd /var/www/html
RUN composer config -g repositories.packagist composer https://packagist.jp
RUN composer create-project --prefer-dist cakephp/app cake
11
8
1

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
11
8