Бэкэнд не может запрашивать dockerized postgresql - PullRequest
1 голос
/ 01 августа 2020

Я запускаю свои контейнеры через файл docker compose. Они находятся в одной сети, и я могу пинговать из своего внутреннего контейнера в контейнер базы данных. Я использую имя базы данных в качестве имени хоста в строке подключения, и это не приводит к ошибкам, связанным с невозможностью найти хост. Вместо этого он просто зависает и время ожидания истекает.

У меня есть тестовая конечная точка, которая должна просто проверить соединение. Когда вы используете эту конечную точку, контейнер базы данных регистрирует «недопустимую длину пакета», и на интерфейсе ничего не происходит, а затем истекает время ожидания. Понятия не имею, что не так. Любая помощь?

version: '3.2' 
 services: 
  server: 
   restart: always 
   build: 
    dockerfile: Dockerfile 
    context: ./nginx 
   depends_on: 
    - backend 
    - frontend 
    - database 
   ports: 
    - '5000:80' 
   networks: 
    - app_network  
 database: 
  image: postgres:latest 
  container_name: database 
  ports: 
   - "5432:5432" 
  restart: always 
  hostname: database 
  environment: 
   POSTGRES_PASSWORD: 1234 
   POSTGRES_USER: postgres 
    
backend: 
build: 
 context: ./backend 
 dockerfile: ./Dockerfile 
 image: kalendae:backend 
 hostname: backend 
 container_name: backend 
 environment: 
  - WAIT_HOSTS=database:5432 
  - DATABASE_HOST=database 
  - DATABASE_PORT=5432 
  - PORT=5051
frontend: 
build: 
 context: ./frontend 
 dockerfile: ./Dockerfile 
image: kalendae:frontend 
hostname: frontend 
container_name: frontend 
environment: 
 - WAIT_HOSTS=backend:5051 
 - REACT_APP_BACKEND_HOST=localhost 
 - REACT_APP_BACKEND_PORT=5051 
...