第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

無法從 docker-compose 上的其他服務解析 postgres 主機名

無法從 docker-compose 上的其他服務解析 postgres 主機名

Go
慕容708150 2023-02-06 18:39:41
我有一個運行 2 個容器的 docker-compose 文件。其中一項服務是 postgres,另一項是我的后端服務。當我嘗試解析 postgres 或嘗試從后端服務的 cli 連接它時,它是成功的。但是當我嘗試使用 hostname 初始化數(shù)據(jù)庫時,出現(xiàn)以下錯誤:2022/09/01 08:49:53 /src/domain/domain.go:29 [錯誤] 初始化數(shù)據(jù)庫失敗,無法連接到host=postgres user=devuser database=backenddev錯誤:主機名解析錯誤(查找 postgres:設備或資源繁忙)恐慌:失敗連接到 host=postgres user=devuser database=backenddev:主機名解析錯誤(查找 postgres:設備或資源繁忙)goroutine 1 [正在運行]: github.com/anilkusc/backend/api.(*Api).Init(0xc00000e150) /src/api/api.go:34 +0x76b github.com/anilkusc/backend/api.(*Api ).Start(0xc00000e150) /src/api/api.go:87 +0x25 main.main() /src/main.go:48 +0x15f當我嘗試從另一個容器 cli 連接 postgresql 時,我得到以下信息:root@8a0824fca084:/# nc -vz postgres 5432Connection to postgres (172.25.0.2) 5432 port [tcp/postgresql] succeeded!root@8a0824fca084:/# curl postgres:5432curl: (52) Empty reply from server這是相關的代碼塊:        d.Database, err = gorm.Open(postgres.Open(os.Getenv("DB_CONN")), &gorm.Config{})        if err != nil {            return err        }這是撰寫文件:version: '3.6'services:  postgres:    image: postgres:14.5    restart: always    environment:      POSTGRES_PASSWORD: <>      POSTGRES_DB: backenddev      POSTGRES_USER: devuser     ports:      - 5432:5432  backend:    image: my-service:v0.0.2    restart: always    environment:      ENV: dev      STORE_KEY: 1234      DB_CONN: host=postgres user=devuser password=<> dbname=backenddev port=5432    ports:      - 8080:8080    depends_on:      - postgres這是后端服務的 dockerfile :FROM golang:1.18.4 as buildWORKDIR /srcCOPY go.sum go.mod ./RUN go mod downloadCOPY . . RUN go build -a -ldflags "-linkmode external -extldflags '-static' -s -w" -o /bin/app.FROM alpineWORKDIR /appCOPY --from=build /bin/app .CMD ["./app"]如果我嘗試使用后端服務上的外部 ip 和端口連接到數(shù)據(jù)庫,它也會成功,但內部連接到 postgresql 時運氣不好。為什么我的應用程序無法解析 postgres 主機,即使它的主機容器可以?
查看完整描述

1 回答

?
莫回無

TA貢獻1865條經(jīng)驗 獲得超7個贊

這可能與 alpine 容器和 golang 1.18.4 容器 dns 庫之間的不兼容有關。我將容器映像從 alpine 更改為 debian,問題已解決。


FROM golang:1.18.4 as build

WORKDIR /src

COPY go.sum go.mod ./

RUN go mod download

COPY . . 

RUN go build -a -ldflags "-linkmode external -extldflags '-static' -s -w" -o /bin/app.


FROM debian:buster-slim #just changed here!

WORKDIR /app

COPY --from=build /bin/app .

CMD ["./app"]


查看完整回答
反對 回復 2023-02-06
  • 1 回答
  • 0 關注
  • 219 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號