GO + postgres + Docker-compose panic: dial tcp: lookup db on 127.0.0.11:53: read udp 127.0.0.1:34943->127.0.0.11:53: i/o timeout

Пробую написать docker compose для веб сервера. При попытке запустить docker-compose up --build "panic: dial tcp: lookup db on 127.0.0.11:53: read udp 127.0.0.1:59003->127.0.0.11:53: i/o timeout"

docker-compose.yml:

version: '3.8'

services:
  web-srv:
    build: ./
    command: ./main
    ports:
      - 80:3000
    depends_on:
      - db
    environment:
      - PSW=aboba128
  
  db:
    restart: always
    image: postgres:latest
    volumes:
      - ./.database/postgres/data:/var/lib/postgres/data
    environment:
      - POSTGRES_PSW=aboba128
    ports:
      - 5432:5436

Dockerfile

FROM golang:latest

ENV GOPATH=/

COPY ./ ./

RUN go mod download
RUN go build -o main .

CMD ["./main"]

main.go:

package main

import (
    "fmt"
    "net/http"

    "github.com/jmoiron/sqlx"
    _ "github.com/lib/pq"
)

type Storage struct {
    db *sqlx.DB
}

func NewStorage() *Storage {
    url := fmt.Sprintf("postgres://%v:%v@%v:%v/%v?sslmode=disable",
        "postgres",
        "aboba128",
        "db",
        "5436",
        "dbtest")
    // url := fmt.Sprintf("host=%s port=%s user=%s dbname=%s password=%s sslmode=%s", "localhost", "80", "postgres", "dbtest", "aboba128", "disable")
    newdb, err := sqlx.Open("postgres", url)
    if err != nil {
        panic(err)
    }

    if err := newdb.Ping(); err != nil {
        panic(err)
    }
    return &Storage{db: newdb}
}

func (s *Storage) Close() {
    s.db.Close()
}

func (s *Storage) GetUsers(w http.ResponseWriter, r *http.Request) {
    rows, err := s.db.Query("select name from users")
    defer rows.Close()

    if err != nil {
        panic(err)
    }
    for rows.Next() {
        var name string
        err := rows.Scan(&name)
        if err != nil {
            panic(err)
        }

        fmt.Fprintln(w, name)
    }
}

func (s *Storage) AddUser(w http.ResponseWriter, r *http.Request) {
    name := r.URL.Query().Get("name")
    _, err := s.db.Exec("insert into users (name) values ($1)", name)
    if err != nil {
        panic(err)
    }
}

func main() {
    s := NewStorage()
    defer s.Close()
    fmt.Println("server is running")

    http.HandleFunc("/getusers", s.GetUsers)
    http.HandleFunc("/adduser", s.AddUser)

    http.ListenAndServe(":3000", nil)
}


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