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

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

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

Nuxt.jsは、ユニバーサルなSPAが開発可能なVue.jsベースのフレームワーク。UIの描画サポートに特化しており、SSRにおけるサーバーサイドとクライアントサイドのUIレンダリングなどさまざまな機能を持ちます。

Laravel

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

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

Docker

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

Q&A

1回答

590閲覧

Docker上でLaravelが動かない【Docker × Nuxt × Laravel × nginx】

RyoyaTake

総合スコア0

Nuxt.js

Nuxt.jsは、ユニバーサルなSPAが開発可能なVue.jsベースのフレームワーク。UIの描画サポートに特化しており、SSRにおけるサーバーサイドとクライアントサイドのUIレンダリングなどさまざまな機能を持ちます。

Laravel

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

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

Docker

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

0グッド

0クリップ

投稿2023/12/03 15:17

編集2023/12/03 19:07

Docker上でNuxt × Laravelのプロジェクトを作成し、nginxサーバーを用い、
localhost(:3000)でNuxtを表示し、localhost/api(:8000)でLaravelを表示したいです。

フロントはうまく動作しているのですが、バックエンドがうまくいきません。
具体的には、docker compose up -dを叩くとNuxtが立ち上がり、localhostでも3000番でも表示されます。
しかしLaravelは立ち上がらず、ローカルのLaravelディレクトリに降りてphp artisan serveすると立ち上がります。(cd ./services/backend  php artisan serve)
コンテナ内で立ち上げるにはどうすれば良いですか?

ディレクトリ構成

. ├── docker │ ├── backend │ │ ├── Dockerfile │ │ └── php.ini │ ├── frontend │ │ └── Dockerfile │ └── web │   ├── Dockerfile │   └── default.conf │ ├── services │ ├── backend │ │ └── Laravelファイル群 │ └── frontend │   └── Nuxtファイル群 └── docker-compose.yml

docker-compose.yml

version: "3.9" services: backend: build: ./docker/backend container_name: nl-backend volumes: - ./services/backend:/backend command: sh -c 'composer install && php artisan serve' ports: - "8000:8000" tty: true environment: - DB_HOST=db - DB_DATABASE=laravel - DB_USERNAME=root - DB_PASSWORD=password frontend: build: ./docker/frontend container_name: nl-frontend volumes: - ./services/frontend:/frontend command: sh -c 'npm install && npm run dev' ports: - "3000:3000" tty: true environment: - NODE_ENV=development - HOST=0.0.0.0 - CHOKIDAR_USEPOLLING=true web: build: ./docker/web container_name: nl-web volumes: - ./services/backend:/backend - ./services/frontend:/frontend ports: - "80:80" depends_on: - frontend - backend db: image: mysql:latest container_name: nl-db ports: - "3306:3306" volumes: - mysql-volume:/var/lib/mysql environment: MYSQL_DATABASE: shukatsu MYSQL_USER: shukatsu MYSQL_PASSWORD: shukatsu MYSQL_ROOT_PASSWORD: local phpmyadmin: image: phpmyadmin/phpmyadmin:latest container_name: nl-phpmyadmin ports: - "8888:80" depends_on: - db volumes: mysql-volume:

docker/backend/Dockerfile

FROM php:8.3.0-fpm WORKDIR /backend RUN apt update \ && apt install -y zlib1g-dev mariadb-client vim libzip-dev \ && docker-php-ext-install zip pdo_mysql \ && apt install -y git \ && pecl install xdebug \ && docker-php-ext-enable xdebug RUN apt install -y npm \ && npm install n -g \ && n stable COPY --from=composer:2.4 /usr/bin/composer /usr/bin/composer COPY php.ini /usr/local/etc/php/

docker/backend/php.ini

[Date] date.timezone = "Asia/Tokyo" [mbstring] mbstring.internal_encoding = "UTF-8" mbstring.language = "Japanese" [PHP] display_errors = On memory_limit = 500M upload_max_filesize = 500M post_max_size = 500M [xdebug] xdebug.mode = debug xdebug.start_with_request = yes xdebug.client_host = "host.docker.internal" xdebug.client_port = 9012 xdebug.log = "/var/log/xdebug.log"

docker/web/Dockerfile

FROM nginx:1.21.3 COPY default.conf /etc/nginx/conf.d/default.conf

docker/web/default.conf

server { listen 80; root /app/public; location / { proxy_pass http://frontend:3000; } location /api { proxy_pass http://backend:8000; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; add_header X-Server-Hostname $hostname; add_header X-Server-Address $server_addr; } client_max_body_size 100m; keepalive_timeout 5; }

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

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

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

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

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

guest

回答1

0

artisan serve コマンドはデフォルトで127.0.0.1、自身からのアクセスしか受け付けません。
nginxコンテナからの接続を受け付ける必要があるので

command: sh -c 'composer install && php artisan serve'

の部分を下記に変えてみてください。

command: sh -c 'composer install && php artisan serve --host=0.0.0.0'

また、FROM php:8.3.0-fpm はphp-fpmを利用する際につかうタグなので、artisanで起動するのであれば FROM php:8.3.0-cli で良いと思います。

投稿2023/12/07 16:08

Eggpan

総合スコア3257

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問