Heim > Backend-Entwicklung > Golang > Fehler beim Initialisieren der Datenbank mit Fehler. Es konnte keine Verbindung zu „host=db user=database=' hergestellt werden: DFÜ-Fehler (DFÜ-TCP xxxx: Verbindung: Verbindung verweigert)

Fehler beim Initialisieren der Datenbank mit Fehler. Es konnte keine Verbindung zu „host=db user=database=' hergestellt werden: DFÜ-Fehler (DFÜ-TCP xxxx: Verbindung: Verbindung verweigert)

王林
Freigeben: 2024-02-06 09:25:14
nach vorne
1285 Leute haben es durchsucht

初始化数据库失败,出现错误无法连接到`host=db user=database=`:拨号错误(拨号tcp xxxx:连接:连接被拒绝)

Frageninhalt

Immer wenn ich den Docker-Container-Dienst starte, erhalte ich die Fehlermeldung failed to initialize.

version: '3'

services:
  app:
    container_name: api
    build:
      context: .
      dockerfile: local.dockerfile
    ports:
      - "9090:9090"
      - "40000:40000"
    security_opt:
      - "seccomp:unconfined"
    cap_add:
      - sys_ptrace
    restart: on-failure
    environment:
      port: 9090
      db_conn: "postgres://admin:pass@db:5432/test?sslmode=disable"
    volumes:
      - .:/app
    depends_on:
      - db
    links:
      - db

  db:
    image: postgres
    container_name: db
    ports:
      - "5432:5432"
    environment:         
      postgres_user: "admin"
      postgres_password: "pass"
      postgres_db: "test"
      tz: "utc"
      pgtz: "utc"
    volumes:
      - ./tmp:/var/lib/postgresql/data
Nach dem Login kopieren

Ich verwende air进行实时重新加载,请找到air.tomlDateien

root="."
tmp_dir="tmp"

[build]
cmd="go build -gcflags=\"all=-N -l\" -o ./bin/main ."
bin="/app/bin"
full_bin="/app/bin/main"
log="air_errors.log"
include_ext=["go", "yaml"]
exclude_dir=["tmp"]
delay=1000

[log]
time=true


[misc]
clean_on_exit=true




func main() {
    Instance, err = gorm.Open(postgres.Open(conn), &gorm.Config{
            Logger: logger.New(
                log.New(os.Stdout, "", log.LstdFlags), logger.Config{
                    LogLevel: logger.Info,
                    Colorful: true,
                }),
        })
        if err != nil {
            panic("Cannot connect to DB" + err.Error())
        }
    }
Nach dem Login kopieren

Wenn Sie den Code erneut speichern und die App live neu laden, wird die Verbindung hergestellt


Richtige Antwort


Sie müssen warten, bis die postgresDatenbankinitialisierung abgeschlossen ist.

Ansicht https://docs. docker.com/compose/compose-file/compose-file-v3/#healthcheck

fürdb服务添加healthcheck

healthcheck:
    test: ["cmd-shell", "pg_isready"]
    interval: 10s
    timeout: 5s
    retries: 5
Nach dem Login kopieren

und ändern depend_onwie folgt

depends_on:
  db:
    condition: service_healthy
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonFehler beim Initialisieren der Datenbank mit Fehler. Es konnte keine Verbindung zu „host=db user=database=' hergestellt werden: DFÜ-Fehler (DFÜ-TCP xxxx: Verbindung: Verbindung verweigert). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage