Docker-ApacheでDocumentRouteが変わらずLaravelが動かなかった理由
- 2020.03.19
- サーバーサイド
- Apache, Docker, DocumentRoute変更, Laravel, MySQL, PHP, エラー改善, スクリプト備忘録, プログラミング, 仮想システム, 自作システム
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
1 2 3 4 5 6 7 8 9 10 11 12 |
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というファイル名だと動かない
1 2 3 4 5 6 7 8 9 10 |
<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
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 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
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はラストかな。
まとめ
いやぁ~解決できてよかった。
頭疲れすぎて今日は一日終わったような感覚です。
疲れたぁ~。
-
前の記事
楽天市場が送料設定で大混乱。 2020.03.18
-
次の記事
楽天市場のお問合せメールアドレスに自動返信を仕込む 2020.03.23
コメントを残す