@yellow_pus

Как правильно подключить psotgres в docker?

Я пытаюсь завернуть свой проект на laravel в докер. Добавил контейнеры: php-fpm,redis,nginx,php-worker, сейчас пытаюсь добавить postgresql. В docker-compose.yml файле для докера написал вот это:
db:
    image: postgres:14-alpine
    restart: always
    networks:
      - internal
    environment:
      - DB_CONNECTION=pgsql
      - DB_HOST=postgres
      - DB_PORT=5432
      - DB_DATABASE=*db*
      - DB_USERNAME=*username*
      - DB_PASSWORD=*password*
      - REDIS_HOST=127.0.0.1
      - REDIS_PASSWORD=null
      - REDIS_PORT=6379
    volumes:
      - ./docker/postgres/datadir:/var/lib/postgresql/data

Когда запускаю docker-compose build, docker-compose up все проходит успешно и контейнер db пишет database system is ready to accept connections
Но на деле, когда пытаюсь через браузер запустить проект, вылезает laravel ошибка:
SQLSTATE[08006] [7] could not connect to server: Connection refused Is the server running on host "127.0.0.1" and accepting TCP/IP connections on port 5432? (SQL: select * from information_schema.tables where table_schema = public and table_name = options and table_type = 'BASE TABLE')

Все эти порты, хосты берутся из .env файла, я в докере новичок и насколько знаю, мне надо, чтобы они брались из самого docker-compose.yml файла, где это я могу явно указать?
Так же, у меня локально стоит nginx,apache2 которые я перед запуском контейнеров останавливаю, потому что, контейнеры начинают жаловаться: bind: address already in use. Надо ли поступать с постгрес точно так же, отключать его перед запуском контейнеров?
  • Вопрос задан
  • 488 просмотров
Решения вопроса 2
fox_12
@fox_12
Расставляю биты, управляю заряженными частицами
Контейнеры вашего проекта видят контейнер с postgres как db а не 127.0.0.1
По той же причине у вас будет проблема с redis
Ответ написан
@yellow_pus Автор вопроса
В итоге я решил проблему вот так: Ввел команду sudo ifconfig в разделе docker0 скопировал адрес 172.*.*.* и вставил его в DB_HOST в .env
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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