Docker создает сброс соединения для чтения из-за ошибки однорангового узла в конвейере

при запуске docker compose в конвейере я получаю эту ошибку, когда тесты на конвейере используют API mycontainer.

panic: Get "http://localhost:8080/api/admin/folder": read tcp 127.0.0.1:60066->127.0.0.1:8080: read: connection reset by peer [recovered]

panic: Get "http://localhost:8080/api/admin/folder": read tcp 127.0.0.1:60066->127.0.0.1:8080: read: connection reset by peer

Это мой файл docker copose:

version: "3"

volumes:
  postgres_vol:
    driver: local
    driver_opts:
      o: size=1000m
      device: tmpfs
      type: tmpfs

networks:
  mynetwork:
    driver: bridge

services:
  postgres:
    image: postgres:14
    container_name: postgres
    restart: always
    environment:
      - POSTGRES_USER=xxx
      - POSTGRES_PASSWORD=xxx
      - POSTGRES_DB=newdatabase
    volumes:
      #- ./postgres-init-db.sql:/docker-entrypoint-initdb.d/postgres-init-db.sql
      - "postgres_vol:/var/lib/postgresql/data"
    ports:
      - 5432:5432
    networks:
      - mynetwork

  mycontainer:
    image: myprivaterepo/mycontainer-image:1.0.0
    container_name: mycontainer
    restart: always
    environment:
      - DATABASE_HOST=postgres
      - DATABASE_PORT=5432
      - DATABASE_NAME=newdatabase
      - DATABASE_USERNAME=xxx
      - DATABASE_PASSWORD=xxx
      - DATABASE_SSL=false
    depends_on:
      - postgres
    ports:
      - 8080:8080
    networks:
      - mynetwork

mycontainer слушает порт 8080 и локально все работает нормально.

Однако, когда я запускаю конвейер, который инициирует этот докер, я получаю сообщение об ошибке.

По сути, я запускаю несколько тестов, которые используют mycontainer API (http://localhost:8080/api/admin/folder).

Если я запускаю docker compose локально и воспроизвожу шаги, выполняемые в моем конвейере, чтобы использовать API, все работает нормально. Я могу локально общаться с обоими контейнерами через localhost.

Кроме того, я попытался использовать проверки работоспособности в контейнерах и 127.0.0.1:8080:8080 в mycontainer и 127.0.0.1:5432:5432 в postgres (включая 0.0.0.0:8080:8080 и 0.0.0.0:5342:5432 на всякий случай) .

Любая идея об этом?

🤔 А знаете ли вы, что...
PostgreSQL поддерживает хранимые процедуры и функции, написанные на языках, таких как PL/pgSQL.


2
352
1

Ответ:

Решено

Я смог воспроизвести вашу ошибку в конвейере.

Убедитесь, что вы ничего не перехватываете (например, код, взаимодействующий с API вашего контейнера).

Вы не упомянули ничего, связанного с вашим пайплайном, но на всякий случай удалите отлов на вашем пайплайне.