5
6

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 3 years have passed since last update.

LaradockでPHP+Apache+mariadbな環境構築をする手順

Posted at

Laradockで環境構築するとnginxがデフォルトになっている。
本番環境とミドルウェアを揃えるため、apacheを利用するのにハマったので手順を残しておきます。

要件

  • Git
  • Docker >= 17.12
  • Laradock v8.0

ディレクトリ構成

~/project/                 ... プロジェクトルート
~/project/laradock         ... Laradock
~/project/laravel          ... Laravel app project
~/project/laravel/public   ... 公開ディレクトリ(Document Root)

Laradockのset up

プロジェクトルートへ移動

cd ~/project/

Laradockをclone

git clone --branch v8.0 https://github.com/laradock/laradock.git

Laradockへ移動

cd ~/project/laradock

.envを作成

cp env-example .env

.envを編集

vim .env
---
- PHP_VERSION=7.3
+ PHP_VERSION=任意のバージョン

- WORKSPACE_INSTALL_NODE=true
+ WORKSPACE_INSTALL_NODE=false

- WORKSPACE_INSTALL_YARN=false
+ WORKSPACE_INSTALL_YARN=false

- WORKSPACE_INSTALL_NPM_GULP=true
+ WORKSPACE_INSTALL_NPM_GULP=false

- WORKSPACE_INSTALL_NPM_VUE_CLI=true
+ WORKSPACE_INSTALL_NPM_VUE_CLI=false

- WORKSPACE_INSTALL_XDEBUG=false
+ WORKSPACE_INSTALL_XDEBUG=true

- PHP_FPM_INSTALL_XDEBUG=false
+ PHP_FPM_INSTALL_XDEBUG=true

+ LARAVEL_HORIZON_INSTALL_PHPREDIS=true

- MARIADB_VERSION=latest
+ MARIADB_VERSION=任意のバージョン

- MARIADB_DATABASE=default
+ MARIADB_DATABASE=任意のDB Name

- MARIADB_USER=default
+ MARIADB_USER=任意のUser Name

- MARIADB_PASSWORD=secret
+ MARIADB_PASSWORD=任意のUser Password
---

docker-compose.ymlを編集

vim docker-compose.yml
---
    laravel-horizon:
      build:
        context: ./laravel-horizon
        args:
          - PHP_VERSION=${PHP_VERSION}
          - INSTALL_PGSQL=${PHP_FPM_INSTALL_PGSQL}
          - INSTALL_BCMATH=${PHP_FPM_INSTALL_BCMATH}
          - INSTALL_MEMCACHED=${PHP_FPM_INSTALL_MEMCACHED}
          - INSTALL_SOCKETS=${LARAVEL_HORIZON_INSTALL_SOCKETS}
          - INSTALL_CASSANDRA=${PHP_FPM_INSTALL_CASSANDRA}
+         - INSTALL_PHPREDIS=${LARAVEL_HORIZON_INSTALL_PHPREDIS}
      volumes:
        - ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER}
        - ./laravel-horizon/supervisord.d:/etc/supervisord.d
      depends_on:
        - workspace
      extra_hosts:
        - "dockerhost:${DOCKER_HOST_IP}"
      networks:
        - backend
---

apacheのvirtual hostsを追加

cp apache2/sites/default.apache.conf apache2/sites/sample.apache.conf

apacheのvirtual hostsを編集

vim apache2/sites/sample.apache.conf
---
<VirtualHost *:80>
-  ServerName laradock.test
+  ServerName sample.test
-  DocumentRoot /var/www/
+  DocumentRoot /var/www/laravel/public/
  Options Indexes FollowSymLinks

-  <Directory "/var/www/">
+  <Directory "/var/www/laravel/public/">
    AllowOverride All
    <IfVersion < 2.4>
      Allow from all
    </IfVersion>
    <IfVersion >= 2.4>
      Require all granted
    </IfVersion>
  </Directory>

</VirtualHost>
---

hostsの設定

vim /etc/hosts
---
+ 127.0.0.1       sample.test
---

laravel project のインストール

composer create-project --prefer-dist laravel/laravel laravel "5.8.*"
cd ~/project/laravel
vim .env
---
DB_CONNECTION=mysql
- DB_HOST=127.0.0.1
+ DB_HOST=mariadb
DB_PORT=3306
- DB_DATABASE=laravel
+ DB_DATABASE=default
- DB_USERNAME=root
+ DB_USERNAME=default
- DB_PASSWORD=
+ DB_PASSWORD=secret

- REDIS_HOST=127.0.0.1
+ REDIS_HOST=redis
REDIS_PASSWORD=null
REDIS_PORT=6379
---
php artisan optimize:clear
php artisan key:generate

composer install

chmod 777 storage/logs
chmod 777 bootstrap/cache
chmod 777 storage/framework
chmod 755 public/index.php

laradock 起動

cd ~/project/laradock

docker 起動

docker-compose up -d workspace mariadb apache2 redis php-fpm

Dockerの設定ファイル(apacheなど)変更した場合

docker-compose up -d --build workspace mariadb apache2 redis php-fpm
or 
docker-compose build --no-cache workspace mariadb apache2 redis php-fpm

Laradock(docker) 操作

dockerのworkspaceにログイン

docker-compose exec workspace bash

docker コンテナ 停止

docker-compose down

docker コンテナ 削除

docker-compose down --rmi all

docker コンテナ ボリューム削除

docker-compose down -v

トラブルシューティング

(1)Laradock 起動時にエラー発生

エラー内容

apache2_1              | AH00526: Syntax error on line 119 of /etc/httpd/conf/httpd.conf:
apache2_1              | DocumentRoot '/var/www/html' is not a directory, or is not readable

対処方法

vi /etc/httpd/conf/httpd.conf
---
- DocumentRoot "/var/www/html"
+ DocumentRoot "/var/www/laravel/public"
---

service httpd restart
5
6
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
5
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?