Подключение к БД в docker-контейнере из другого docker-контейнера

Имеется Java приложение, работающее в контейнере Docker. Оно пытается подключиться к БД Postgres, которое так же работает в Docker-контейнере. Оба живут на одном сервере, и подключены к одной docker-сети, каждому контейнеру дано определённое имя.

docker network inspect gitlabci

[
    {
        "Name": "gitlabci",
        "Id": "2bef428d1ac728aa7e177c55716e2347eb70c6080a81ed63cfb48034acfc31da",
        "Created": "2022-11-15T16:31:04.474082241+03:00",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "172.18.0.0/16",
                    "Gateway": "172.18.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {
            "152e59a27e70570d4f8ff8732742f0a8ad87226930bf14ffcef9932e0cc44ee8": {
                "Name": "auth-runner",
                "EndpointID": "580921d16d87e0939fa622197c55e98e207e4b6ea929dcea814470ed388a4f05",
                "MacAddress": "02:42:ac:12:00:03",
                "IPv4Address": "172.18.0.3/16",
                "IPv6Address": ""
            },
            "d1de071f33b7db58d456562b1eb113ce912d5c3e5d49886f074485d83edb301c": {
                "Name": "postgres-auth-db",
                "EndpointID": "f90b410948d2ec9380567d048bd37db3f91cc323366e42cdb802abefe89ddb2b",
                "MacAddress": "02:42:ac:12:00:02",
                "IPv4Address": "172.18.0.2/16",
                "IPv6Address": ""
            }
        },
        "Options": {},
        "Labels": {}
    }
]

Если зайти напрямую в контейнер с приложением docker exec -it auth-runner bash, и оттуда вызвать контейнер с БД curl postgres-auth-db:5432, то в ответ получаю curl: (52) Empty reply from server, что указывает на корректное соединение, но пустой ответ.

В Java приложении в файле application.properties для подключения прописана такая строчка: spring.datasource.url=jdbc:postgresql://postgres-auth-db:5432/simpleauthdb. К сожалению это не работает, и при сборке в maven на этапе тестов, при инициализации подключения к базе получаю ошибку Caused by: java.net.UnknownHostException: postgres-auth-db

Возможно я что-то делаю не верно, прошу помочь разобраться. В любом случае моя задача - указать приложению подключение к базе.

P.S. Если кто-то решит сказать, что не нужно кидать базу в контейнер и все дела - я в курсе. В моём случае это только болванка для корректного прохождения тестов.


Дополнение, файл docker-compose.yml

version: "3.7"
services:
  db:
    image: postgres:12
    container_name: postgres-auth-db
    restart: always
    depends_on:
      - runner
    environment:
      - POSTGRES_USER=simpleauth
      - POSTGRES_PASSWORD=simpleauthpassword
      - POSTGRES_DB=simpleauthdb
    ports:
      - "5432:5432"
  runner:
    image: gitlab/gitlab-runner:latest
    container_name: auth-runner
    restart: always
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /home/drunner/auth-runner:/etc/gitlab-runner:z

Дополнение второе /etc/nsswitch.conf

# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.

passwd:         files
group:          files
shadow:         files
gshadow:        files

hosts:          files dns
networks:       files

protocols:      db files
services:       db files
ethers:         db files
rpc:            db files

netgroup:       nis

Значит первым делом я беру настройки из файла hosts. Вот и он: /etc/hosts

127.0.0.1       localhost
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.20.0.3      7e899edbaf1e
172.20.0.2      postgres-auth-db

Сеть поменялась по сравнению с началом вопроса, так как я перешёл от варианта самостоятельного создания сети docker к docker-compose.


Ответы (1 шт):

Автор решения: Михаил Пан-Асовский

В общем ничего не получилось и после двух дней тщетных попыток я решил не использовать БД в docker-контейнере.

→ Ссылка