DockerとDocker Composeを使用したシンプルなLaravelの開発環境を作成していきます。
この記事でやったことのリポジトリは以下になります
https://github.com/mosaxiv/docker-laravel
事前準備
以下を事前にインストールしてください。
Laravelプロジェクトの作成
プロジェクトを作成します。
Dockerを経由でComposerをつかってLaravelプロジェクトを作成します。
1
|
$ docker run --rm -v $(pwd):/app composer create-project --prefer-dist laravel/laravel my-site |
説明
--rm
コンテナ終了時にコンテナ自動的に削除します。
ComposerでLaravelプロジェクトを作成するためだけに使用するのでコマンド実行後にコンテナは不要なので削除するために使用します。
-v $(pwd):/app
ホストのディレクトリをマウントします。
[ホストディレクトリの絶対パス]:[コンテナの絶対パス]
コンテナ上で作ったLaravelのプロジェクトをホストに残すために使用します。
composer create-project --prefer-dist laravel/laravel my-site
Laravelのインストールコマンド
Docker Composeで環境を作成
先程作成したフォルダ下にdocker-compose.ymlを作成します。
1
2
|
$ cd my-site
$ vi docker-compose.yml |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
version: '3'
services:
web:
build: ./docker/web
ports:
- 80:80
volumes:
- ./:/var/www/html
depends_on:
- mysql
mysql:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: db
MYSQL_USER: user
MYSQL_PASSWORD: pw
ports:
- 3306:3306
volumes:
- mysql-db:/var/lib/mysql
volumes:
mysql-db:
|
説明
webサーバ用のコンテナの作成をします。
1
2
3
4
5
6
7
8
|
web:
build: ./docker/web <- パスのDockerfileを見てコンテナ作成
ports:
- 80:80
volumes:
- ./:/var/www/html <- ホストのディレクトリをマウント
depends_on:
- mysql <- mysqlコンテナに依存 |
mysql用のコンテナを作成します。
1
2
3
4
5
6
7
8
9
10
11
|
mysql:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: db <- DB
MYSQL_USER: user <- ユーザー
MYSQL_PASSWORD: pw <- パスワード
ports:
- 3306:3306
volumes:
- mysql-db:/var/lib/mysql |
webコンテナの作成
webサーバ用のDockerfileを作成します。
build: ./docker/web
で定義している場所にDockerfileを作成します。
- PHP拡張のインストール
- Composerインストール
- ドキュメントルートの設定変更
- phpの設定変更
1
2
|
$ mkdir -p ./docker/web
$ vim ./docker/web/Dockerfile |
1
2
3
4
5
6
7
8
9
10
11
12
|
FROM php:7.2-apache
RUN apt-get update \
&& apt-get install -y zip unzip vim libpq-dev \
&& docker-php-ext-install pdo_mysql pdo_pgsql
COPY php-base.ini $PHP_INI_DIR/conf.d/
COPY httpd-base.conf /etc/apache2/sites-available/laravel.conf
RUN a2dissite 000-default.conf && a2ensite laravel.conf && a2enmod rewrite
RUN curl -sS https://getcomposer.org/installer | php && mv composer.phar /usr/local/bin/composer
|
httpd.confを作成
1
|
$ vim ./docker/web/httpd-base.conf |
1
2
3
4
5
6
7
8
9
10
|
<VirtualHost *:80>
DocumentRoot /var/www/html/public
<Directory /var/www/html/public>
AllowOverride All
</Directory>
ErrorLog /var/log/apache2/error.log
CustomLog /var/log/apache2/access.log combined
</VirtualHost>
|
php.iniを作成
1
|
$ vim ./docker/web/php-base.ini |
1
2
3
4
5
6
|
[Date]
date.timezone = "Asia/Tokyo"
[mbstring]
mbstring.internal_encoding = "UTF-8"
mbstring.language = "Japanese"
|
起動
準備ができたの起動します。
docker-compose.ymlがあるフォルダへ移動してコマンドを実行します。
http://localhost.com
へアクセスできます!
MySQL接続
envには以下のように設定します
1
2
3
4
5
6
|
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=db
DB_USERNAME=user
DB_PASSWORD=pw
|