質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

解決済

1回答

5743閲覧

DockerでLaravelの開発環境構築。mod_rewriteでNotFoundエラー

mikeko0901

総合スコア227

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

0グッド

0クリップ

投稿2021/05/13 01:23

チームの事情でDockerでLaravelの開発環境を構築する必要があり、初心者ではありますが色々見ながら行っています。

ただ、

docker-compose up

の際に、

'/etc/apache2/mods-available/rewrite.load': No such file or directory

というエラーが出てしまい、コンテナを起動することができません。
(何回かトライすると起動できるという不思議さ・・・)

以下、docker-compose.ymlファイルです。(Dockerfileの中身も全てこちらに記載しています)
■docker-compose.yml

# Compose fileのバージョン指定 version: '3' # どんなコンテナを立ち上げるか services: # laravelを動かすコンテナ app: image: php:7.4-apache # どのポートを開いて繋ぐか。下記はコンテナの80番ポートを開いて、ホストの8000番につなぐ ports: - "80:80" # 先ほど作ったDockerfileを使って、コンテナをビルドするという指定 #build: ./docker/app # コンテナの名前を指定 container_name: altouch_app # コンテナとホスト側のディレクトリを同期する場所の指定。laravelのソースが入る予定の場所 volumes: - ./src:/var/www/html - ./php/php.ini:/usr/local/etc/php/php.ini - ./apache/000-default.conf:/etc/apache2/sites-enabled/000-default.conf command: > bash -c " apt-get update && apt-get install -y git-all sudo unzip wget gnupg curl default-mysql-client && curl -sL https://deb.nodesource.com/setup_15.x | bash - && apt-get install -y nodejs && apt-get update && npm install npm@latest -g && docker-php-ext-install pdo_mysql && wget https://getcomposer.org/composer-stable.phar && mv composer-stable.phar* /usr/local/bin/composer && sudo chmod 755 /usr/local/bin/composer && composer global require laravel/installer && mv /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled && /bin/sh -c a2enmod rewrite && apachectl -D FOREGROUND " # MySQLを動かすコンテナ db: # Docker HubからMySQL5.7の公式イメージをダウンロードしてくる指定 image: mysql:5.7 container_name: altouch_db # コンテナ内の環境変数を指定。環境変数を渡すとビルド時に設定してくれるDockerイメージがあるので、利用の際はDocker Hubのサイトで確認すると良い environment: MYSQL_ROOT_PASSWORD: root MYSQL_DATABASE: altouch_db MYSQL_USER: altouch_user MYSQL_PASSWORD: altouch_pass TZ: 'Asia/Tokyo' # 起動時のコマンド command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci # ディレクトリ同期。設定ファイルとMySQLのデータが保存される場所を同期している。コンテナは基本的に起動時に変更されてもコンテナ自体が止まるとデータが消えてしまうため、保存しておきたいものはホストマシンと同期しておく必要がある。 volumes: - ./db/data:/var/lib/mysql - ./db/my.cnf:/etc/mysql/conf.d/my.cnf ports: - 3306:3306

mod-rewiteをしないと、トップページ以外がNotFoundになってしまうため、
commandでmod-rewiteを入れています。

アドバイスをいただけますと幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

.htaccessmod_rewrite モジュールを使用しているので必須モジュールです。
https://github.com/laravel/laravel/blob/8.x/public/.htaccess

command で様々なパッケージのインストールをしてますが、コンテナを作るたびにインストール処理が走るので、Dockerfileに分けた方が良いと思います。

投稿2021/05/13 05:49

ucan-lab

総合スコア888

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mikeko0901

2021/05/19 08:36

ありがとうございます。Dockerfileを作成するようにします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問