はじめに
なゆたです.
最近オンラインジャッジシステムを作ろうとしていたんですがルーティングを導入しようとして色々と面倒になったのでlaravelに頼ることにしました.
しかしインストールだけで山ほどこけたので軽くまとめていきたいと思います.
laravelがインストールできない
どうしてか.
composerがインストールがうまくいかない
まずcomposerがどうやったらインストールできるかがわからない.
Dockerを使ってLaravel開発環境構築
このブログを見ながらインストールしました.
Dockerfileのcomposerインストール部分は以下の通りです.
RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
RUN php -r "if (hash_file('sha384', 'composer-setup.php') === 'a5c698ffe4b8e849a443b120cd5ba38043260d5c4023dbf93e1558871f1f07f58274fc6f4c93bcfd858c6bd0775cd8d1') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
RUN php composer-setup.php
RUN php -r "unlink('composer-setup.php');"
RUN mv composer.phar /usr/local/bin/composer
phpのzipが入ってない
laravelをインストールしようとすると次のようなエラーが出ます.
configure: error: zip support requires ZLIB. Use --with-zlib-dir=<DIR> to specify prefix where ZLIB include and library are located
まぁ要するにzlibが入ってないよって怒られるわけですね.
zlibのインストール
zlibを入れます.
RUN apt-get install -y zlib1g-dev
phpのzipを入れるためのlibzipが入っていない
前の項目までやると次のエラーが出ます.
configure: error: Please reinstall the libzip distribution
要するにlibzipが入っていないようなのでlibzipを入れます.
RUN apt-get install -y libzip-dev
ここまですればあとはcomposerでlaravelをインストールするだけです.
最終的なDockerfile
FROM php:7.3-fpm
RUN apt-get update && apt-get -y upgrade
#zipを入れるための部分
RUN apt-get install -y zlib1g-dev && apt-get install -y libzip-dev
RUN docker-php-ext-install pdo_mysql zip
#composerのインストール
RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
RUN php -r "if (hash_file('sha384', 'composer-setup.php') === 'a5c698ffe4b8e849a443b120cd5ba38043260d5c4023dbf93e1558871f1f07f58274fc6f4c93bcfd858c6bd0775cd8d1') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
RUN php composer-setup.php
RUN php -r "unlink('composer-setup.php');"
RUN mv composer.phar /usr/local/bin/composer
ENV COMPOSER_ALLOW_SUPERUSER 1
ENV COMPOSER_HOME /composer
ENV PATH $PATH:/composer/vendor/bin
WORKDIR /var/www/html/laravel
RUN composer global require "laravel/installer"
#終わりに
エラーログを読み飛ばしていたら大切な部分に気づかずにめっちゃ時間かかるので頑張ってきちんと読みましょう.
(もしくは大切な部分をきちんと読めるようになりましょう.)