3
3

More than 3 years have passed since last update.

さくっとLaravel+Nginx+MySQL環境をDockerに構築するテンプレート

Last updated at Posted at 2020-01-08

TL;DR

コードだけ欲しい方はこちらを参照。テンプレート化してあるので、そのままお使いいただけます。

はじめに

今回の記事は、こちらの記事を参考にさせていただいた際にちょっと気になった点を修正したものを載せただけです。
仕組みとか詳しく説明いただいています。アリガタヤ :pray:

何が気になったのか

インストーラがアップデートしてハッシュ値が変わると使えなくなるという問題。
https://getcomposer.org/download/ に書かれているクイックインストールスクリプトをそのままDockerfileに記述してあるためですね。

ダウンロードページの方にも

WARNING: Please do not redistribute the install code. It will change with every version of the installer. Instead, please link to this page or check how to install Composer programmatically.

とあるので、まあ流石によろしくはない。

対応策

公式が用意してくれています。
https://getcomposer.org/doc/faqs/how-to-install-composer-programmatically.md

これをdocker build時に実行するだけ。

ディレクトリ構造
\project
├ app/<Laravel Project>
├ php
│ ├ Dockerfile
│ ├ composer-init.sh
│ └ php.ini
├ nginx
│  └ default.conf
└ docker-compose.yml
Dokcerfile
FROM php:7.2-fpm

RUN apt-get update \
  && apt-get install -y wget zlib1g-dev mariadb-client \
  && docker-php-ext-install zip pdo_mysql

COPY php.ini /usr/local/etc/php/
COPY composer-init.sh ./

#Composer install
RUN chmod -R 755 ./composer-init.sh
RUN ./composer-init.sh
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

RUN composer global require "laravel/installer"

シェルスクリプト内でwgetしているので、apt-getでインストールしています。

あとはmysqlのパスワードやらなんやらを.envに切り出した程度で、ほとんど元の記事を参考にさせていただいています :pray:

課題(?)

本来Dockerはいつでもどこでも同じ環境を構築するべきなので、composer自体のバージョン管理とかも必要だと思いますが、一旦そこは目を瞑りました;;
正確にバージョン指定したい方は、下のような感じでハッシュを指定して直接持ってきてインストールしましょう。

wget https://raw.githubusercontent.com/composer/getcomposer.org/76a7060ccb93902cd7576b67264ad91c8a2700e2/web/installer -O - -q | php -- --quiet

おわり

本題と関係ないんですけど、githubのtemplateって便利ですよね。
新しいプロダクト作ろうとしたときのイニシャルコストを最小限に抑えられるので、普段使いしそうなフレームワークは大体テンプレート化しています。

(といっても、自分の周りで使っている方を見かけない……)

3
3
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
3
3