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

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

如何使用go with docker等待postgres db?

如何使用go with docker等待postgres db?

Go
FFIVE 2022-09-05 10:25:32
我通過 docker-compose 使用 postgres 部署了一個 gorm 應(yīng)用程序。我通過另一個容器服務(wù)進(jìn)行了數(shù)據(jù)庫創(chuàng)建和數(shù)據(jù)遷移。此處僅列出了應(yīng)用和數(shù)據(jù)庫容器問題。docker-compose.yml  app:    build: ./app    command: ["/bin/wait-for-it.sh", "db:5432", "--", "/bin/main"]    volumes:      - ./app/:/app/    ports:      - 8080:8080    environment:      - DB_USER=postgres      - DB_NAME=mydb      - DB_PASS=password    depends_on:      - db    links:      - db  db:    image: postgres:13-alpine    environment:      - POSTGRES_PASSWORD=password      - POSTGRES_DB=mydbDockerfileFROM golang:1.16.3-alpine3.13 AS builderWORKDIR /appCOPY . .RUN CGO_ENABLED=0 GOOS=linux go build -o mainFROM alpine:3.13RUN apk update && apk --no-cache add bashCOPY --from=builder /app /bin/.RUN ["chmod", "+x", "/bin/wait-for-it.sh"]db/db.gopackage dbimport (    "fmt"    "os"    "gorm.io/driver/postgres"    "gorm.io/gorm")var (    db *gorm.DB)func Init() {    conn := fmt.Sprintf("host=db port=5432 user=%s password=%s dbname=%s sslmode=disable", os.Getenv("DB_USER"), os.Getenv("DB_PASS"), os.Getenv("DB_NAME"))    _, err := gorm.Open(postgres.Open(conn), &gorm.Config{})    if err != nil {        panic(err)    }}func GetDB() *gorm.DB {    return db}models/post.gopackage modelstype Post struct {    ID    int    `json:"id" gorm:"primary_key"`    Title string `json:"title"`    Body  string `json:"body"`}main.go   1   │ package main   2   │   3   │ import (   4   │     "app/db"   5   │     "app/models"   6   │     "fmt"   7   │ )   8   │   9   │ func main() {  10   │     db.Init()  11   │  12   │     db := db.GetDB()  13   │  14   │     var posts []models.Post  15   │     db.Find(&posts)  16   │     fmt.Println(posts)  17   │ }
查看完整描述

1 回答

?
慕沐林林

TA貢獻(xiàn)2016條經(jīng)驗 獲得超9個贊

您需要在命令中添加等待時間:

command: ["/bin/wait-for-it.sh", "db:5432", "-t", "600000000", "--", "/bin/main"]

時間在這里是等待的最長時間,應(yīng)用程序?qū)⒃跀?shù)據(jù)庫啟動并運行后立即執(zhí)行。/bin/main

在沒有默認(rèn)值的情況下運行時為 15 秒-t

更多信息 這里


查看完整回答
反對 回復(fù) 2022-09-05
  • 1 回答
  • 0 關(guān)注
  • 103 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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