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

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

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

Next.jsは、Reactを用いたサーバサイドレンダリングなどを行う軽量なフレームワークです。Zeit社が開発しており、nextコマンドでプロジェクトを作成することにより、開発環境整備が整った環境が即時に作成できます。

Laravel

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

Docker

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

Q&A

解決済

1回答

229閲覧

Doker環境でのNext.jsとLaravel/Breezeで初期画面の認証が出来ません。

Tatsuya1192

総合スコア9

Next.js

Next.jsは、Reactを用いたサーバサイドレンダリングなどを行う軽量なフレームワークです。Zeit社が開発しており、nextコマンドでプロジェクトを作成することにより、開発環境整備が整った環境が即時に作成できます。

Laravel

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

Docker

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

0グッド

0クリップ

投稿2024/02/27 17:03

編集2024/02/27 17:25

実現したいこと

Next.js・Laravel/Breeze・Nginxのコンテナを用いて、Next.jsをフロントエンド、LaravelをBreezeのバックエンドAPIで動かしたいと考えております。
ひとまずはプロキシ等考えずにフロントエンドとバックエンドで通信できる事を目指していたのですが、Breeze-nextの初期認証機能で丸1日つまづいております。
イメージ説明
イメージ説明

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

register画面でバリデーションが発生しない正しい形式で入力し、registerボタンを押すと以下の表示が出ます。
Unhandled Runtime Error
Error: Network Error
Call Stack
createError
node_modules/axios/lib/core/createError.js (16:0)
XMLHttpRequest.handleError
node_modules/axios/lib/adapters/xhr.js (99:0)

該当のソースコード

docker

1version: '3.9' 2 3services: 4 proxy: 5 ~~~~ 6 7 backend: 8 container_name: example-be 9 build: ./infra/php 10 restart: always 11 ports: 12 - 8000:8000 13 volumes: 14 - ./backend:/var/www/html 15 - ./infra/php/php.ini:/usr/local/php/php.ini 16 depends_on: 17 - db 18 19 frontend: 20 container_name: example-fe 21 build: ./infra/node 22 tty: true 23 restart: always 24 environment: 25 - WATCHPACK_POLLING=true 26 ports: 27 - "3000:3000" 28 volumes: 29 - ./frontend:/usr/src/app 30 31 db: 32 container_name: example-db 33 build: ./infra/mysql 34 restart: always 35 ports: 36 - 3306:3306 37 volumes: 38 - db-store:/var/lib/mysql 39 - ./infra/mysql/my.cnf:/etc/mysql/conf.d/my.cnf 40 environment: 41 MYSQL_DATABASE: example_db 42 MYSQL_ROOT_PASSWORD: rootpassword 43 MYSQL_USER: firstuser 44 MYSQL_PASSWORD: firstpassword 45 TZ: Asia/Tokyo 46
# Laravel .env APP_NAME=Laravel APP_ENV=local APP_KEY=~~~ APP_DEBUG=true APP_URL=http://0.0.0.0:8000 FRONTEND_URL=http://frontend:3000
# Nextjs .env.local NEXT_PUBLIC_BACKEND_URL=http://backend:8000

php

1# Laravel config/cors.php 2 3 'paths' => ['*'], 4 5 'allowed_methods' => ['*'], 6 7 'allowed_origins' => [env('FRONTEND_URL', 'http://localhost:3000')], 8 9 'allowed_origins_patterns' => [], 10 11 'allowed_headers' => ['*'], 12 13 'exposed_headers' => [], 14 15 'max_age' => 0, 16 17 'supports_credentials' => true,

dockerfile

1<mysql> 2FROM mysql:8.0 3 4COPY ./my.cnf /etc/mysql/conf.d/my.cnf 5RUN chmod 644 /etc/mysql/conf.d/my.cnf 6 7<Laravel> 8FROM php:8.1-fpm-alpine 9# php 8.1 10# fpm server 11# AlpineLinux ver11 12 13WORKDIR /var/www/html 14 15ENV COMPOSER_ALLOW_SUPERUSER=1 \ 16 COMPOSER_HOME=/composer 17 18# install composer 19RUN curl -sS https://getcomposer.org/installer | php 20RUN mv composer.phar /usr/local/bin/composer 21 22# install packages 23RUN apk update 24RUN apk add git 25 26# install php extensions 27RUN docker-php-ext-install pdo pdo_mysql 28 29<Nextjs> 30FROM node:20-alpine 31 32WORKDIR /usr/src/app 33 34# install packages 35RUN apk update 36RUN apk add git 37 38# git clone https://github.com/laravel/breeze-next.git . を用いております。

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果
  1. コンテナを立ち上げ、Laravel・Next双方の開発用サーバーを立ち上げ、localhostの8000番でLaravel、3000番でNextが動作していることは常に確認しています。
  2. そもそもコンテナ自体接続できていないと考えていたため、双方のコンテナでpingコマンドを試しましたが通信されており、名前解決も出来ていました。
  3. 双方の.envに記述しているURLもコンテナ名でなく実際のIPに変えてみたりしています。
  4. 通信の際にわたってくる変数が正しくないのかと考え、直上で変数の中身を見てみましたが.envの内容でした。

他に必要な情報がありましたらお教えいただければ幸いです。

補足

DockerDesktop - v4.15.0

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

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

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

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

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

guest

回答1

0

ベストアンサー

Laravel

APP_URL=http://localhost:8000 FRONTEND_URL=http://localhost:3000

Next

NEXT_PUBLIC_BACKEND_URL=http://localhost:8000

READMEに書いてること。
https://github.com/laravel/breeze-next

docker-compose.ymlのサービス名で通信できるのはDocker内だけの話。
Dockerの中のLaravelからはDB_HOST=dbでMySQLに繋がる。
Dockerの外であるブラウザからはhttp://backendには繋がらない。

投稿2024/02/27 23:43

pcs

総合スコア345

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

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

Tatsuya1192

2024/02/28 08:33

有難うございます! READMEには目を通していたのですが、コンテナ間通信だとlocalhostではないよな~と誤解してました。 確かにブラウザから通信するのでこの設定でないといけなかったのですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問