17
21

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

DockerでLaravel(Apache+php-fpm+mysql)を構築する手順書

Last updated at Posted at 2017-07-09

mac + DockerでLaravel環境を作る為の手順書です

以下の環境を作成致します

  • CentOS 7
  • Apache 2.4
  • php 5.6
  • MySQL 5.5
  • Laravel

またDockerなどはインストールされているものとします

最終的なディレクトリ

project_name
  ├── laradock
  │     ├─ apahce2
  │     │    └─ Dockerfileなど
  │     ├─ mysql
  │     │    └─ Dockerfileなど
  │     ├─ php-fpm
  │     │    └─ Dockerfileなど
  │     ├─ workspace
  │     │    └─ Dockerfileなど
  │     ├─ .laradock
  │     │    └─ data
  │     │
  │     ├── docker-compose.yml
  │     └── .env
  │
  └── laravel-app
       └── laravelのアプリを配置

Dockerの必要な設定をする

laradockをクローンをし.envを作成する

ついでにのちに必要になる.laradock/dataも作成しておく

$ git clone https://github.com/laradock/laradock.git
$ cd laradock
$ cp env-example .env
$ mkdir -p .laradock/data

envファイルをいじる

$ vim .env

.env
# laradock内に作りたい為(13行目)
- DATA_SAVE_PATH=~/.laradock/data
+ DATA_SAVE_PATH=.laradock/data

# workspaceとはバージョンを別にしたい為(20行目)
+ PHP_FPM_VERSION=56

# ポートの重複を避ける為(84,85行目)
- APACHE_HOST_HTTP_PORT=80
- APACHE_HOST_HTTPS_PORT=443
+ APACHE_HOST_HTTP_PORT=8888
+ APACHE_HOST_HTTPS_PORT=8443

mysqlの設定

$ vim mysql/Dockerfile

Dockerfile
# 1行目
- FROM mysql:8.0
+ FROM mysql:5.5

apacheの設定

$ vim apache2/Dockerfile

Dockerfile
# 1行目
- FROM webdevops/apache:ubuntu-16.04
+ FROM webdevops/apache:centos-7

docker-compose.ymlの設定

$ vim docker-compose.yml

docker-compose.yml
# php-fpmの設定(78,82行目)
- dockerfile: "Dockerfile-${PHP_VERSION}"
+ dockerfile: "Dockerfile-${PHP_FPM_VERSION}"

- ./php-fpm/php${PHP_VERSION}.ini:/usr/local/etc/php/php.ini
+ ./php-fpm/php${PHP_FPM_VERSION}.ini:/usr/local/etc/php/php.ini

composeする

  • workspace
  • php-fpm
  • apache
  • mysql

の4つを立ち上げます

$ docker-compose up -d workspace mysql php-fpm apache2

結構時間がかかるのでコーヒーを飲んで待ちましょう。

laravelアプリの作成と設定の変更

workpsaceのコンテナ内へ入る

$ docker-compose ps "workspace"
          Name                Command      State          Ports
-----------------------------------------------------------------------
laradock_workspace_1   /sbin/my_init   Up      0.0.0.0:2222->22/tcp

$ docker exec -it laradock_workspace_1 bash

コンテナ内でlaravel-appを作成する

root@{コンテナID}:/var/www# 
長いので省略
# composer create-project --prefer-dist laravel/laravel project_name

ここでも時間がかかるので待ちましょう
終わったら# exitしてコンテナから出ましょう

docker-compose.ymlの設定の変更

docker-compose.yml
- ${APPLICATION}:/var/www
+ ${APPLICATION}project_name:/var/www

この状態で
http://localhost:8888
へアクセスしても繋がりません。

なぜ繋がらないのかログを見ましょう

$ docker logs -f laradocktuna_apache2_1

-> Executing /opt/docker/bin/service.d/httpd.d//10-init.sh
2017-07-09 06:43:10,580 INFO success: apached entered RUNNING state, process has stayed up for > than 0 seconds (startsecs)
AH00526: Syntax error on line 119 of /etc/httpd/conf/httpd.conf:
DocumentRoot '/var/www/html' is not a directory, or is not readable
2017-07-09 06:43:10,629 INFO exited: apached (exit status 1; not expected)

永遠にログが出続けていますね…。✌︎('ω'✌︎ )

注目すべきは

DocumentRoot
'/var/www/html' is not a directory

(/var/www/htmlのディレクトリが見つからないよ!)

なので

apacheコンテナに入ってDocumentRootを設定してあげましょう

apacheコンテナに入る

$ docker-compose ps "apache2"
         Name                       Command               State                      Ports
-------------------------------------------------------------------------------------------------------------
laradocktuna_apache2_1   /opt/docker/bin/entrypoint ...   Up      0.0.0.0:8443->443/tcp, 0.0.0.0:8888->80/tcp

$ docker exec -it laradock_apache2_1 bash

httpd.confの設定を変更する

[root@{コンテナID} public]#
長いので省略
# vi /etc/httpd/conf/httpd.conf
httpd.conf
# DocumentRootを変更する(119行目)
- DocumentRoot "/var/www/html"
+ DocumentRoot "/var/www/public"

httpdサービスをリロードする
# service httpd restart
終わったら# exitして構いません

http://localhost:8888
へアクセスしてみると…。

スクリーンショット 2017-07-09 15.52.17.png

最後に

DocumentRootの設定をわざわざコンテナに入らずにやる方法もあります。

事前にhttpd.confを用意しておいて
DockerfileでCOPY文を書く事です。

その他Dockerfile等で済ませられる方法があれば
コメントよろしくお願いします。

またこちらに最小化したものを置いておきます
https://github.com/tunagohan/laradock

17
21
0

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
17
21

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?