亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

Docker golang 杜松子酒 postgres

Docker golang 杜松子酒 postgres

Go
BIG陽 2023-08-14 16:38:13
我正在嘗試使用 Postgres 為 golang 應用程序設置一個 docker。如果我刪除/注釋 Postgres,go 應用程序在容器中可以正常工作。同樣,我可以啟動 Postgres 容器并登錄它。我能夠進行 docker-compose up 。但是當我進行 API 調用時,例如:localhost:3000/api/admin/users. 它給出了錯誤:error: {        "error": "+dial tcp 127.0.0.1:5432: connect: connection refused"    }Postgres連接字符串是這樣的:connStr := fmt.Sprintf("host=postgres user=anurag password=anu_12345 dbname=bankingapp sslmode=disable")db, err := sql.Open("postgres", connStr)DockerfileFROM golang:1.13WORKDIR /go/src/banking-appCOPY . .RUN go get -d -v ./...RUN go install -v ./...CMD ["go" , "run", "main.go"]docker-compose.ymlversion: '3'services:  web:    build: .    ports:      - "3000:3000"  postgres:    image: "postgres"    environment:      POSTGRES_USER: 'anurag'      POSTGRES_PASSWORD: 'anu_12345'      POSTGRES_DB: 'bankingapp'
查看完整描述

2 回答

?
慕哥6287543

TA貢獻1831條經驗 獲得超10個贊

似乎有一些缺少的端口被公開:5432:5432只需添加它即可從問題中排除端口,也從您遇到的錯誤中排除,似乎您的 docker 應用程序容器依賴于數據庫容器,因此您需要一種等待數據庫容器啟動并且應用程序容器可以連接它的方法,檢查depends_ondocker compose:

version:?'3'services:web:
??build:?.
??ports:
????-?"3000:3000"
??depends_on:
????postgres
??restart_policy:
????condition:?on-failure
??postgres:
????image:?"postgres"
????ports:
??????-?"3000:3000"
????environment:
??????POSTGRES_USER:?'anurag'
??????POSTGRES_PASSWORD:?'anu_12345'
??????POSTGRES_DB:?'bankingapp'

使用depends_on時需要注意以下幾點:

  1. depends_on 在啟動 web 之前不會等待 db 和 redis 準備好 - 直到它們啟動。如果您需要等待服務準備就緒,請參閱控制啟動順序以了解有關此問題的更多信息以及解決該問題的策略。

  2. 版本3不再支持depends_on的條件形式。

  3. 使用版本 3 Compose 文件以 swarm 模式部署堆棧時,將忽略 dependent_on 選項。

根據上述說明,您可能仍然面臨問題,但重新啟動策略將重新啟動應用程序容器,并且您將連接到數據庫。


查看完整回答
反對 回復 2023-08-14
?
慕村225694

TA貢獻1880條經驗 獲得超4個贊

我找到了答案。只需要重建映像或使用掛載加載即可。代碼沒有刷新。



查看完整回答
反對 回復 2023-08-14
  • 2 回答
  • 0 關注
  • 182 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號