#前提
docker-compose up -dの実行だけでlaravelの環境をローカルで作りたかった
laravel用のコンテナの記載情報があまりなかったのでここに記載しておく(laradoc以外でね)
※超自分用のメモなので適当な箇所がありますがご容赦ください。
自分で読みにくかったら更新します。
#作成する環境
コンテナ3つ
・php(app) --laravelの資材置き
・nginx(web)
・mysql(db)
##ディレクトリ構成
laravel_project
├── docker-compose.yml
├── docker-nginx
│ ├── Dockerfile
│ └── default.conf
└── docker-php
└── Dockerfile
#作業
###1.作業用のディレクトリ作成 & 移動(laravel_projectという名前にします。)
mkdir laravel_project && cd laravel_project
###2.docker-compose.ymlを作成
version: '3'
services:
web:
build: ./docker-nginx
ports:
- 80:80
depends_on:
- app
volumes:
- ./:/var/www/html
- ./docker-nginx/default.conf:/etc/nginx/conf.d/default.conf
links:
- app
app:
build: ./docker-php
depends_on:
- db
links:
- db
volumes:
- ./:/var/www/html
db:
image: mysql:5.7.19
ports:
- 3306:3306
environment:
MYSQL_ROOT_PASSWORD: root #ここにroot用のパスワードを記載
MYSQL_DATABASE: myblog_db #ここにデータベースを記載
MYSQL_USER: myblog_user #ここにユーザ名を記載
MYSQL_PASSWORD: myblog_password #ここにユーザ用パスワードを記載
###3.Dockerfileの記載
docker-compose.ymlのbuild
にディレクトリを記載するとそのディレクトリのDockerfileをみてイメージを起動する
■docker-nginx/Dockerfile
FROM nginx:1.11
RUN apt-get update && apt-get install -y \
vim \
unzip \
zip \
git
FROMに起動イメージ、RUNに起動時に実行させるコマンドを記載
コンテナ作成時にupdateと必要なコマンドをインストールするようにすると便利だと思います。
■docker-php/Dockerfile
FROM php:7-fpm
RUN apt-get update && apt-get install -y \
vim \
zip \
unzip \
iputils-ping \
git
RUN docker-php-ext-install pdo_mysql
PHPはPDOがないのでインストールします。
###4.docker-nginx/default.confの記載
server {
listen 80;
index index.php index.html;
server_name php-docker.local;
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
root /var/www/html/myblog/public;
location / {
root /var/www/html/myblog/public;
index index.php index.html index.htm;
}
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /var/www/html/myblog/public;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass app:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}
今回はlaravelにてmyblogという新規プロジェクトを作成するのでドキュメントルートには
/var/www/html/myblog/public
と記載しておきましょう
■20181007追記
上記のnginxの設定だとrootディレクトリ以外は404のエラーとなってしまった。
なので以下のようにdefault.confを書き直す。
server {
listen 80;
index index.php index.html;
server_name php-docker.local;
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
root /var/www/html/myblog/public;
location / {
try_files $uri $uri/ @laravel;
}
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /var/www/html;
}
location ~ \.php$ {
try_files $uri $uri/ @laravel;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass app:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
location @laravel {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass app:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME /var/www/html/myblog/public/index.php;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}
■以下のリンク参考
nginxでwordpressのパーマリンクをデフォルト以外に対応する
###5.docker-compose up -d
ここまで準備したらDockerを起動します。
docker-compose up -d
起動までに時間がかかりますが、以下文言が出れば起動できたと思います。
Starting laravel_db_1 ... done
Starting laravel_app_1 ... done
Starting laravel_web_1 ... done
一応以下コマンドで起動できているか確認しましょう
$ docker-compose ps
Name Command State Ports
------------------------------------------------------------------------------------------------
laravel_app_1 docker-php-entrypoint php-fpm Up 9000/tcp
laravel_db_1 docker-entrypoint.sh mysqld Up 0.0.0.0:3306->3306/tcp
laravel_web_1 nginx -g daemon off; Up 0.0.0.0:80->80/tcp
State
がUp
となっていれば起動できていますね。
###6.Dockerコンテナ内でlaravelの準備
Dockerコンテナ内に入る
docker-compose exec app /bin/bash
root@fdb72742f724:/var/www/html#
以下公式のcomposerのサイトからcomposerをインストールするコマンドを実施
https://getcomposer.org/download/
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('SHA384', 'composer-setup.php') === '93b54496392c062774670ac18b134c3b3a95e5a5e5c8f1a9f115f203b75bf9a129d5daa8ba6a13e2cc8a1da0806388a8') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"
composerがインストールされているか確認
ls -la
composer.phar
Dockerのプロジェクトを作成する
php composer.phar create-project --prefer-dist laravel/laravel myblog
少し時間がかかるがmyblogができていれば成功
ls -la
myblog
あとはブラウザでlocalhost
にアクセスしてLaravelの文字が出ていればokです。
今回はここまで!