2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Docker環境でのLaravel×Nuxt.js開発時のDB接続とCORS問題を解決

Posted at

はじめに

Docker環境を用いて、Laravel(APIサーバー)、Nuxt.js(フロント)の環境を構築しました。
その際コンテナ名関連のエラーが2つほど出たのでその点について記載します。

本記事で扱わないもの

  • Docker環境の構築方法
  • LaravelをAPIサーバーとして利用する方法
  • Nuxt.jsでのAPIリクエスト方法

概要

  • LaravelをAPIサーバー、Nuxt.jsをフロントとして利用
  • axiosを用いてLaravelにAPIをリクエスト

DB接続問題

LaravelでDBへアクセスしたら下記エラーが発生しました。

スクリーンショット 2020-12-29 22.29.16.png

調べたところDockerの場合、.envの変更が必要になるとのことで修正。

(変更前)

.env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=

(変更後)

.env
DB_CONNECTION=mysql
DB_HOST=db #ここをデータベースのコンテナ名にする
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=

無事jsonを取得できることが確認できました!
スクリーンショット 2020-12-29 22.43.10.png

CORS問題

Nuxt.jsからはaxiosを用いてLaravelへjsonを取りにいきます。
スクリーンショット 2020-12-29 22.47.13.png
スクリーンショット 2020-12-29 22.47.19.png
プロキシ関連でエラーが出ましたので対応します。

プロキシ設定

モジュールを追加します。

$ yarn add @nuxtjs/proxy

nuxt側では/apiでLaravelにアクセスします。

webがコンテナ名、80がコンテナのポートになります。(ここを最初localhost:8000にしていたので少しつまずきました)

nuxt.config.js
  modules: [
    "@nuxtjs/axios",
    "@nuxtjs/proxy" //追加
  ],
  axios: {
    proxy: true //追加
  },
  proxy: {
    "/api": "http://web:80" //追加
  },

無事データ取得できました!
スクリーンショット 2020-12-29 22.49.10.png

おわりに

LaravelをAPIサーバーとしてDocker環境で開発する際などは上記以外にも必要となる部分が出てくるかと思いますが、その辺りは検索したら割とすぐ出てくるのでそこにあまり載っていなかったものに関して今回記載しました。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?