簡體   English   中英

Laravel 無法連接到設置 in.env 文件的數據庫服務器

[英]Laravel won't connect to database server that set in .env file

我在 docker-compose 上啟動了一個新的 Laravel 9.x + JsonApi 項目,其中包含 2 個容器,“web”和“mysql”。 工匠遷移、播種和 db:show 工作正常。 但是當我試圖從瀏覽器或 Postman 加載頁面時,它返回數據庫錯誤

`SQLSTATE[HY000] [2002] php.network_getaddresses: mariadb的 getaddrinfo 失敗:名稱解析暫時失敗

select * from redirects where redirects id = 1 限制 1 `

奇怪的是,我的數據庫主機是mysql ,我的代碼(除了一些供應商文件)、docker 文件和 in.env 文件中都沒有提到“mariadb”字符串。 我還檢查了容器環境變量——什么也沒有。

工匠腳本工作正常。

這是我的設置,如果有幫助的話。 從未提及 Mariadb,從一開始就是 mysql。

docker-compose.yml

version: "3.4"
services:
  mysql:
    image: mysql
    volumes: 
      - mysql_db:/var/lib/mysql
    ports:
      - 3306:3306
    environment:
      - MYSQL_ROOT_PASSWORD=***
      - MYSQL_DATABASE=url_shortener
  web:
    build:
      dockerfile: Dockerfile.web.dev
      context: .
    #image: php:alpine
    volumes:
      - "./:/app"
      - "/app/src/vendor"
      - web_root_home:/root
    working_dir: /app/src/
    command: "php artisan serve --host=0.0.0.0 --port=7999"
    ports:
      - 8000:7999
    depends_on:
      - mysql
volumes:
  mysql_db:
  web_root_home:

Dockerfile.web.dev

#FROM php
FROM bitnami/laravel
WORKDIR /app/src/
COPY --from=composer:latest /usr/bin/composer /usr/local/bin/composer
ENV COMPOSER_ALLOW_SUPERUSER=1
RUN apt update
RUN apt install -y git build-essential vim mc mlocate
RUN pecl install xdebug
COPY ./src /app/src
COPY ./src/composer.json ./
COPY ./src/.env ./
RUN composer install
RUN php artisan key:generate

CMD ["php", "artisan", "serve", "--host=0.0.0.0", "--port=8000"]

.env(數據庫部分)

DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=url_shortener
DB_USERNAME=root
DB_PASSWORD=***

app/config/database.php 沒有改變

工匠數據庫:顯示

root@a3c873713ee1:/app/src# php artisan db:show

  MySQL 8 ...................................................................
  Database .................................................... url_shortener
  Host ................................................................ mysql
  Port ................................................................. 3306
  Username ............................................................. root
  URL .......................................................................
  Open Connections ........................................................ 3
  Tables .................................................................. 6
  Total Size ........................................................ 0.09MiB

  Table .......................................................... Size (MiB)
  redirects ............................................................ 0.02
  failed_jobs .......................................................... 0.02
  migrations ........................................................... 0.02
  personal_access_tokens ............................................... 0.02
  password_resets ...................................................... 0.02
  users ................................................................ 0.02

遷移和播種工作正常,我可以從主機筆記本電腦連接到 mysql。 所有種子數據都在那里

我試圖清除配置緩存,沒有幫助

root@a3c873713ee1:/app/src# php artisan config:clear

   INFO  Configuration cache cleared successfully.

我也重新加載了容器,也沒有運氣

堆棧跟蹤沒有用錯誤屏幕截圖

我完全不知道要嘗試什么,也不知道把這個 mariadb 主機帶到哪里。

我可以通過在 my.env 文件中定義 DATABASE_URL=mysql://root:PASSWORD@mysql/url_shortener 來解決這個問題。 仍然不知道它從哪里得到 mariadb 主機。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM