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

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

新規登録して質問してみよう
ただいま回答率
85.31%
docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

Laravel

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

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

1回答

2357閲覧

connection to server at "127.0.0.1", port 5432 failed: Connection refused Is the server run ・・・のエラー

hfuob

総合スコア9

docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

Laravel

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

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2023/08/27 02:11

編集2023/08/31 13:30

実現したいこと

画面を表示した際にエラーが出ていますのでエラーを解消したいです。

前提

現在、Windows10のWSL上でPHP/Laravelのtodoリストを作成しています。
・postgresql起動→sudo service postgresql start
・docker起動
・Laravel sail起動→./vendor/bin/sail up
・ローカル表示→http://127.0.0.1:80/
ローカル画面を表示したときにDBに接続できていないと思われるようなエラーが表示されます。
※エラーの場所:app/Http/Controllers/MainController.php: 11
$items = DB::select('select * from todolist');でエラー

発生している問題・エラーメッセージ

SQLSTATE[08006] [7] connection to server at "127.0.0.1", port 5432 failed: Connection refused Is the server running on that host and accepting TCP/IP connections?

該当のソースコード

php

1<?php 2namespace App\Http\Controllers; 3 4use Illuminate\Support\Facades\DB; 5use Illuminate\Http\Request; 6 7class MainController extends Controller 8{ 9 public function index() { 10 $items = DB::select('select * from todolist'); 11 return view('todo', ['items' => $items]); 12 } 13}

.env

DB_CONNECTION=pgsql DB_HOST=127.0.0.1 DB_PORT=5432 DB_DATABASE=todo DB_USERNAME=postgres DB_PASSWORD=pass01

docker-compose.yml

services: laravel.test: build: context: ./vendor/laravel/sail/runtimes/8.2 dockerfile: Dockerfile args: WWWGROUP: '${WWWGROUP}' image: sail-8.2/app extra_hosts: - 'host.docker.internal:host-gateway' ports: - '${APP_PORT:-80}:80' - '${VITE_PORT:-5173}:${VITE_PORT:-5173}' environment: WWWUSER: '${WWWUSER}' LARAVEL_SAIL: 1 XDEBUG_MODE: '${SAIL_XDEBUG_MODE:-off}' XDEBUG_CONFIG: '${SAIL_XDEBUG_CONFIG:-client_host=host.docker.internal}' IGNITION_LOCAL_SITES_PATH: '${PWD}' volumes: - '.:/var/www/html' networks: - sail depends_on: - pgsql pgsql: image: 'postgres:15' ports: - '${FORWARD_DB_PORT:-5432}:5432' environment: PGPASSWORD: '${DB_PASSWORD:-secret}' POSTGRES_DB: '${DB_DATABASE}' POSTGRES_USER: '${DB_USERNAME}' POSTGRES_PASSWORD: '${DB_PASSWORD:-secret}' volumes: - 'sail-pgsql:/var/lib/postgresql/data' - './vendor/laravel/sail/database/pgsql/create-testing-database.sql:/docker-entrypoint-initdb.d/10-create-testing-database.sql' networks: - sail healthcheck: test: - CMD - pg_isready - '-q' - '-d' - '${DB_DATABASE}' - '-U' - '${DB_USERNAME}' retries: 3 timeout: 5s networks: sail: driver: bridge volumes: sail-pgsql: driver: local

DB情報(php artisan tinker)確認

> DB::connection()->getconfig(); = [ "driver" => "pgsql", "host" => "127.0.0.1", "port" => "5432", "database" => "todo", "username" => "postgres", "password" => "pass01", "charset" => "utf8", "prefix" => "", "prefix_indexes" => true, "search_path" => "public", "sslmode" => "prefer", "name" => "pgsql", ] >

試したこと

https://zenn.dev/nagan/articles/364f441d0e63b0
postmaster.pidを削除→エラーは同じでした。

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

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

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

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

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

hoshi-takanori

2023/08/27 02:37

PostgreSQL がホスト OS 上で動き、Laravel は docker 内で動いてるなら、docker はホスト OS とは別環境なので、localhost (127.0.0.1) ではなく host.docker.internal とかにすると良いかも…。
guest

回答1

0

.envの
DB_HOST=127.0.0.1

DB_HOST=pgsql
に変更したら動かないでしょうか。

投稿2023/08/27 12:56

niiyz

総合スコア131

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

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

hfuob

2023/08/27 14:31

DB_HOST=pgsqlに変換すると、下記のエラーが表示されました。 SQLSTATE[08006] [7] could not translate host name "pgsql" to address: Temporary failure in name resolution 検索してこちらのURLを調べると→https://teratail.com/questions/242563 「Dockerコンテナ内ではなく、自分のローカルで実行してませんか? Dockerで環境構築しているのならDockerコンテナ内で実行しないと名前解決できないと思います。」 これが関係ありそうな気がしますが、どういうことでしょうか?
niiyz

2023/08/28 11:17

> https://teratail.com/questions/242563 ここのdocker-compose.ymlのservicesにvuesplash_databaseという名前でpostgresがあります。 あなたのdocker-compose.ymlにはservicesにpgsqlという名前でpostgresがあります。 > postgresql起動→sudo service postgresql start docker-compose.ymlに書いてるpgsqlを使用するならWSLのlinuxに入っているpostgresは不要と思います。 sail upしたときのコンソールログでpostgresが起動しているのがわかると思います。
hfuob

2023/08/31 13:15

sudo service postgresql stopでpostgresqlを止めてからもう一度sail up してみましたが同じエラーでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問