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

Как исправить ошибку при запуске тестов?

Использую laravel postgresql, проект разворачиваю на docker, проект работает, но при запуске тестов вылетает ошибка:

SQLSTATE[08006] [7] could not translate host name "postgres" to address: No address associated with hostname


Для тестов использую туже конфигурацию, что и для всего проекта. Подскажите как решить эту проблему.
  • Вопрос задан
  • 1754 просмотра
Подписаться 2 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 3
покажите Dockerfile'ы и/или docker-compose.yaml
подозреваю у вас неправильно названы ноды - не так как в тесте
Ответ написан
Комментировать
@sergmit Автор вопроса
docker-compose:
version: '3'

services:
  laravel:
    image: lorisleiva/laravel-docker:latest
    volumes:
      - ./:/var/www
      - composer:/root/.composer/cache
    command: php -d memory_limit=256M

  service-nginx:
    build:
      context: ./docker/nginx
    depends_on:
      - service-php
      - laravel
      - postgres
    volumes:
      - ./:/var/www
    ports:
      - "8080:80"

  service-php:
    build:
      context: ./docker/php
    volumes:
      - ./:/var/www
    hostname: php

  service-php-cli:
    build:
      context: ./docker/php-cli
    volumes:
      - ./:/var/www
      - composer:/root/.composer/cache
    command: php -d memory_limit=256M

  postgres:
    build:
      context: ./docker/postgres
    ports:
      - "65432:5432"
    restart: always
    environment:
      PGDATA: "/var/lib/postgresql/data"
      POSTGRES_PASSWORD: qwerty
      POSTGRES_USER: root
      POSTGRES_DB: database
    volumes:
      - pgdata:/var/lib/postgresql/data

  adminer:
    image: adminer
    depends_on:
      - postgres
    restart: always
    ports:
      - 3000:8080

  redis:
    image: redis:4.0.5-alpine
    command: ["redis-server", "--appendonly", "yes"]


volumes:
  composer:
  pgdata:
    driver: local
Ответ написан
@Kriodezz
Если вы запускаете тесты из контейнера, командой, то интерпретатор будет искать подключение по внутренней сети, соответственно в .env.testing нужно указывать
DB_HOST=postgres#название сервиса
DB_PORT=5432#внутренний порт

Если же тесты запущены не из контейнера, а из контекста хоста, например из интерфейса phpstorm, то нужно указывать
DB_HOST=localhost
DB_PORT=65432#ваш внешний порт.

Важно: иногда localhost:/внешний порт/ может не разрешить подключение, поэтому вместо localhost пробуйте 127.0.0.1, либо нужно использовать адрес сети докера. Чтобы его узнать, введите команду
ip addr show docker0
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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