Docker-ApacheでDocumentRouteが変わらずLaravelが動かなかった理由
Docker-ApacheでDocumentRouteが変わらずLaravelが動かなかった理由
マジで疲れました...。
Dockerの無い通常の仕様では苦も無くDocumentRoute変えてるので「何で出来ないんだ!」と...もう泣いてました。
CentOSでそのまま動かしている場合はOS内のhttpd.confのドキュメントルート変えるだけで簡単に変更できます。
なので、Dockerでも同じだろうと読み込ませるファイルのドキュメントルートを変えました。
でもLaravelが出てこない。何やってもうまくいかないのでindex.phpをProjectトップに置いたらこいつが出てきやがるわけです。
先に判明した理由を書いてしまいます。
今回作っていた構成
作成していたファイル構成はこんな感じです。
Laravel-Docker
├── docker/
│ ├── php/
│ │ └── php.ini
│ ├── mysql/
│ └── web/
│ ├── Dockerfile
│ ├── httpd-base.conf
│ └── supervisord.conf
│
├── docker-compose.yml
└── Laravel-Project/
ちゃんと参考サイトを見て、最初に見た参考サイトで書いてあったファイル名にしたのですが、これが落とし穴でした。
読込ファイル名にhttpd-base.confを記載しても書き換えが起こらない
今回発覚した問題がココ。
同じ内容を記載しているにもかかわらず、ファイル名を 000-default.conf に変えただけで意図した動きになりました。
まさかこんな所に原因があると思ってなかったので、Dockerfile書き換えて、httpd-base.confの書き方変えてみて、利用イメージをApacheからCentOSに切り替えてみたり3日にわたり試行錯誤。
結果、こんな感じでまとまりました。
ApacheのDockerfile
FROM php:7.2-apache
RUN usermod -u 1000 www-data \
&& groupmod -g 1000 www-data \
&& a2enmod rewrite \
&& pecl install xdebug-2.6.0 \
&& apt-get update -y \
&& apt-get install -y zlib1g-dev \
&& docker-php-ext-enable xdebug \
&& docker-php-ext-install pdo_mysql mysqli mbstring zip \
&& apt-get clean
COPY 000-default.conf /etc/apache2/sites-available/
000-defuault.conf ※httpd-base.confというファイル名だと動かない
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/public
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
EnableSendfile off
</VirtualHost>
docker-compose.yml
version: '3'
services:
web:
container_name: Apache
build: ./docker/web
depends_on:
- mysql
ports:
- "8000:80"
privileged: true
volumes:
- ./docker/app/php.ini:/usr/local/etc/php/php.ini
- ./WebShopCreator:/var/www/html/
restart: always
mysql:
image: mysql:5.7
container_name: MSQL
volumes:
- ./docker/mysql/data:/var/lib/mysql
- ./logs:/var/log/mysql
- ./entrypoint/initdb.d/:/docker-entrypoint-initdb.d
restart: always
env_file: ./docker/mysql/.env.dev
command: mysqld --character-set-server=utf8 --colliation-server=utf8_unicode_ci
ports:
- "3306:3306"
restart: always
phpmyadmin:
image: phpmyadmin/phpmyadmin
container_name: PMA
links:
- mysql
environment:
PMA_ARBITRARY: 1
PMA_HOSTS: mysql
ports:
- "3000:80"
restart: always
残す所はDBのコピーとSSL設定
今のところはDockerテスト用のサーバーで実験している状態なので、ここにのDBにレコード入れて動き確認して本番サーバーで稼働実験して、Docker-Laravelの正式採用という感じですね。
SSLはラストかな。
まとめ
いやぁ~解決できてよかった。
頭疲れすぎて今日は一日終わったような感覚です。
疲れたぁ~。

