Dockerを用いたLaravel10の環境構築

実現したいこと

「docker compose up -d --build」でコンテナを立ち上げてブラウザにアクセスすると、LaravelのWelcomeページが表示されてるようにしたい。

※Laravelは、立ち上げたコンテナ内に入りインストールするのではなく、Dockerfile内の設定で行うように記述してます。

発生している問題・分からないこと

ディレクトリに必要なフォルダとファイルの記述を追加したあとにコンテナを立ち上げても、Laravelのページが表示されない。

・ディレクトリ構成

user-laravel10/ ├── Dockerfiles/ │ ├── mysql/ │ │ └── Dockerfile │ ├── nginx/ │ │ ├── Dockerfile │ │ └── default.conf │ └── php/ │ └── Dockerfile └── docker-compose.yml

・それぞれのファイルの中身
【mysql/Dockerfile】

FROM mysql:8.0 ENV MYSQL_ROOT_PASSWORD=root ENV MYSQL_DATABASE=laravel ENV MYSQL_USER=laravel ENV MYSQL_PASSWORD=laravel

【nginx/Dockerfile】

FROM nginx:latest COPY Dockerfiles/nginx/default.conf /etc/nginx/conf.d/default.conf

【nginx/default.conf】

server { listen 80; server_name localhost; root /var/www/html/public; index index.php index.html index.htm; location / { root /var/www/html/public; try_files $uri $uri/ /index.php?$query_string; } location ~ \.php$ { include fastcgi_params; fastcgi_pass php:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } location ~ /\.ht { deny all; } }

【php/Dockerfile】

FROM php:8.2-fpm WORKDIR /var/www/html RUN apt-get update && apt-get install -y \ git \ unzip \ libpq-dev \ libonig-dev \ libzip-dev \ zip \ && docker-php-ext-install pdo pdo_mysql mbstring zip exif pcntl COPY --from=composer:latest /usr/bin/composer /usr/bin/composer RUN composer create-project --prefer-dist laravel/laravel=10 . RUN chown -R www-data:www-data /var/www/html RUN chmod -R 755 storage

【docker-compose.yml】

version: '3.8' services: php: build: context: . dockerfile: Dockerfiles/php/Dockerfile volumes: - .:/var/www/html depends_on: - mysql nginx: build: context: . dockerfile: Dockerfiles/nginx/Dockerfile ports: - "8080:80" volumes: - .:/var/www/html depends_on: - php mysql: build: context: . dockerfile: Dockerfiles/mysql/Dockerfile environment: MYSQL_ROOT_PASSWORD: root MYSQL_DATABASE: laravel MYSQL_USER: laravel MYSQL_PASSWORD: laravel ports: - "3308:3306" volumes: - db_data:/var/lib/mysql volumes: db_data:

以上これらの設定を済ませ、docker compose up -d --buildを実行し無事コンテナは立ち上がるのですが、ブラウザにアクセスすると「File not found.」と表示されます。
調べてみると、どうやら【nginx/default.conf】ファイルの設定に誤りがあるとのことで、rootの部分をLaravelが表示されるよう正しく定義しないといけないらしい。
しかし、どこを定義してあげればいいのかがわからず、現在ここで立ち止まっている状態です。

ネットで調べながら記述した内容なので、ここの部分は必要ないとか、ここはこういう書き方だよという指摘などあれば、教えて頂けると助かります。

該当のソースコード

特になし

試したこと・調べたこと

上記の詳細・結果

【nginx/default.conf】ファイルのroot定義の部分を/var/www/html/laravel/publicに変更したり、locationの部分にも新たにrootを記述したりなどしましたが、結果は変わらずでした。

補足

特になし

コメントを投稿

0 コメント