##目的
ローカル環境で簡単にCAKEPHP3での開発が始められるようにする!
##まずはmysqlのDBサーバコンテナを作成
まずは、my.confを作って適当な場所に設置します。
デフォルトで文字コードがlatin何とかってのになっているのでutf8に変更をします。
[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