どんな記事
Docker上でLaravel環境を構築するための記事
こんな人向け
・とりあえずLaravelを使いたいけど、ローカル環境は汚したくないのでDockerを使いたい人
・「細けぇことはいいんだよ!とりあえずコード書かせてくれよ!」という人向け
準備
DockerやDocker-composeなどのインストールは終わっている状態
ディレクトリ構成
下記の構成に沿ってあらかじめフォルダを作成します
「sample_docker_laravel」の部分は作りたいアプリ名に変更してください
docker-compose.ymlの作成
docker-compose.yml
version: '3'
services:
app:
ports:
- "80:80"
build: ./docker/app
container_name: laravel_app
volumes:
- ./src:/var/www/html
db:
image: mysql:5.7
container_name: laravel_db
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: laravel_db
MYSQL_USER: laravel_user
MYSQL_PASSWORD: laravel_pass
TZ: 'Asia/Tokyo'
command: mysqld --character-set-server=utf8 --collation-server=utf8_unicode_ci
volumes:
- ./docker/db/data:/var/lib/mysql
- ./docker/db/my.cnf:/etc/mysql/conf.d/my.cnf
ports:
- 3306:3306
Dockerfileの作成
FROM php:7.4-apache
ADD php.ini /usr/local/etc/php/
ADD 000-default.conf /etc/apache2/sites-enabled/
RUN cd /usr/bin && curl -s http://getcomposer.org/installer | php && ln -s /usr/bin/composer.phar /usr/bin/composer
RUN apt-get update \
&& apt-get install -y \
git \
zip \
unzip \
vim \
libpng-dev \
libpq-dev \
&& docker-php-ext-install pdo_mysql
RUN mv /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled
RUN /bin/sh -c a2enmod rewrite
000-default.confの作成
app_nameの部分は作りたいアプリ名にしてください
000-default.conf
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/app_name/public
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<Directory /var/www/html/app_name/public>
AllowOverride All
</Directory>
</VirtualHost>
php.iniの作成
php.ini
[Date]
date.timezone = "Asia/Tokyo"
[mbstring]
mbstring.internal_encoding = "UTF-8"
mbstring.language = "Japanese"
my.cnfの作成
my.cnf
[mysqld]
character-set-server=utf8
ターミナルでアプリのディレクトリへ移動
$ cd app_name
Dockerを起動状態しておく(忘れないように)
Dockerイメージを作成する(ちょっと時間かかります)
$ docker-compose build
Dockerをバックグランドで起動
$ docker-compose up -d
コンテナに入る
$ docker exec -i -t laravel_app bash
laravelアプリを作成
app_nameをアプリ名に変更して実行します
$ composer create-project --prefer-dist laravel/laravel app_name "6.18.*"
アプリのディレクトリへ移動
$ cd app_name
ストレージの権限を変更
$ chmod 777 -R storage/
$ php artisan key:generate
ブラウザで起動確認
Dockerの起動をストップする場合は
$ docker-compose stop
参考
Laravel学習帳
非常に丁寧に説明されており、大変参考にさせて頂きました。