Задать вопрос
@lodas

Как починить ошибку в Laravel 11 Connection refused (Connection: mysql, SQL)?

Есть файл docker-compose.yml
services:
  nginx:
    image: nginx:latest
    volumes:
      - ./:/var/www
      - ./_docker/nginx/conf.d:/etc/nginx/conf.d
    ports:
      - "8876:3476"
    depends_on:
      - app
    container_name: api-laravel-nginx
    networks:
      - api-network

  app:
    build:
      context: .
      dockerfile: _docker/app/Dockerfile
    volumes:
      - ./:/var/www
    depends_on:
      - mysql
    container_name: api-laravel-app
    networks:
      - api-network

  mysql:
    image: mysql:8.3
    restart: always
    volumes:
      - ./tmp/db:/var/lib/mysql
    environment:
      MYSQL_DATABASE: dbBlogApi
      MYSQL_ROOT_PASSWORD: rxdxrcg
    ports:
      - "3306:3306"
    container_name: api-laravel-mysql
    networks:
      - api-network

networks:
  api-network:
    name: api-network
    driver: bridge
    external: true

А так же laravel version 11 с таким содержимым env:
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=dbBlogApi
DB_USERNAME=root
DB_PASSWORD=rxdxrcg

Контейнеры запускаются отлично и они в одной созданной мной сети(api-network) - проверял что все контейнеры принадлежат именно этой сети.

Почему https://site.ru/api/post работает только с .env DB_HOST=127.0.0.1, а https://site.ru/ работает только с DB_HOST=base?

т.е. если я проставлю в .env DB_HOST=127.0.0.1 то на https://site.ru/ будет ошибка (Connection refused (Connection: mysql, SQL:..) и в тоже время https://site.ru/api/post нормально работает

если я проставлю в .env DB_HOST=base то https://site.ru/ будет нормально работать, а на https://site.ru/api/post будет ошибка (Connection refused (Connection: mysql, SQL:..)

Не понятно как проставить DB_HOST в .env чтобы работал https://site.ru/ и https://site.ru/api/post
  • Вопрос задан
  • 127 просмотров
Подписаться 1 Средний 26 комментариев
Пригласить эксперта
Ответы на вопрос 1
yesbro
@yesbro
Думаю, помогаю думать
У тебя два конфига. Причем один обращается к php-файлам проекта минуя контейнер.

Есть два варианта

1) Убрать конфиг nginx снаружи контейнера, сделать что бы конфиг внутри контейнера принимал запросы на 80/443 порт
2) Сделать с внешнего nginx проксирование всех запросов в nginx-контейнера.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы