CakePHPのDockerfileを作った話
はじめに
数年前に作った CakePHP の Dockerfile が動作しなくなっていたので修正してみました。
修正結果
最低限、必要なものは入っているはず。
# #-------------------------------------------------------------------------- # Image Setup #-------------------------------------------------------------------------- # FROM php:7.3.3-apache LABEL maintainer="shimomo <yuichi@shimomo.net>" WORKDIR /var/www/cakephp # #-------------------------------------------------------------------------- # PHP Setup #-------------------------------------------------------------------------- # # Install the tools RUN apt-get update RUN apt-get install -y libicu-dev libpq-dev libzip-dev zlib1g-dev zip unzip # Install the PHP intl extension RUN docker-php-ext-install intl # Install the PHP pcntl extension RUN docker-php-ext-install pcntl # Install the PHP zip extension RUN docker-php-ext-install zip # Install the PHP mbstring extension RUN docker-php-ext-install mbstring # Install the PHP pdo_mysql extension RUN docker-php-ext-install pdo_mysql # Install the PHP pdo_pgsql extension RUN docker-php-ext-install pdo_pgsql # Install the PHP composer RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer # #-------------------------------------------------------------------------- # Apache Setup #-------------------------------------------------------------------------- # COPY ./000-default.conf /etc/apache2/sites-available/000-default.conf COPY ./001-default-ssl.conf /etc/apache2/sites-available/001-default-ssl.conf RUN usermod -u 1000 www-data RUN groupmod -g 1000 www-data RUN apt-get install -y ssl-cert RUN make-ssl-cert generate-default-snakeoil RUN a2enmod ssl RUN a2enmod rewrite RUN a2ensite 001-default-ssl.conf # #-------------------------------------------------------------------------- # Port Setup #-------------------------------------------------------------------------- # EXPOSE 80 EXPOSE 443
ビルドしたイメージは こちら です。
動作検証
$ git clone git@github.com:cakephp/app.git cakephp $ cd cakephp $ docker run -d -p 80:80 -p 443:443 -v ${PWD}:/var/www/cakephp --name cakephp shimomo/cakephp $ docker exec -it cakephp composer install
ここで http://127.0.0.1/ にアクセスしてみる。
Could not load configuration file: /var/www/cakephp/config/app.php
何やらファイルが読み込めないらしい。 調べた感じだと config/app.php は composer install で自動生成されるファイルらしい。 それが生成されていないのが原因なので、もう一度 composer install を実行してみる。
$ docker exec -it cakephp composer install
すると、以下のように無事 config/app.php が生成された。
Created `config/app.php` file Created `/var/www/cakephp/tmp/cache/views` directory Set Folder Permissions ? (Default to Y) [Y,n]? Y Updated Security.salt value in config/app.php
再び http://127.0.0.1/ にアクセスしてみると CakePHP のデフォルトページが表示されましたとさ。 しかし、最初の composer install で config/app.php が生成されなかった理由は何だろうか? 気が向いたら調べてみよう。
おわりに
最近は Laravel を使うことが多いので、役に立つ日が来るかは分からない。