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)
}