简体   繁体   English

应用程序无法使用 docker-compose 连接到 Postgresql 数据库

[英]App couldn't connect to Postgresql Database with docker-compose

I'm trying to get my web application running using docker-compose.我正在尝试使用 docker-compose 运行我的 web 应用程序。
My Dockerfile我的Dockerfile

FROM golang:1.15

WORKDIR /goprojects/vnlist

COPY . .

RUN go get github.com/revel/revel
RUN go get github.com/revel/cmd/revel
RUN go get -d -v ./...

EXPOSE 9000

CMD [ "revel", "run", "-a", "vnlist" ]

My docker-compose.yml我的docker-compose.yml

version: '3.3'
services:
  web:
    build: .
    ports: 
      - "9000:9000"
  db:
    image: "postgres"
    environment: 
      POSTGRES_USER: "postgres"
      POSTGRES_PASSWORD: "postgresql123"
      POSTGRES_DB: "vnlist_db"
    volumes: 
      - db-data:/foo

volumes: 
  db-data:

The DBsetup file DBsetup文件

package models

import (
    "fmt"

    "gorm.io/driver/postgres"
    "gorm.io/gorm"
)

var DB *gorm.DB

var (
    DB_HOST     = "localhost"
    DB_PORT     = "5432"
    DB_USER     = "postgres"
    DB_PASSWORD = "postgresql123"
    DB_NAME     = "vnlist_db"
    DB_TIMEZONE = "Asia/Jakarta"
)

func InitDB() {
    dsn := fmt.Sprintf("host=%s port=%s user=%s password=%s dbname=%s sslmode=disable",
        DB_HOST, DB_PORT, DB_USER, DB_PASSWORD, DB_NAME)
    db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{})
    if err != nil {
        fmt.Println("DB Error: ", err)
    }

    db.AutoMigrate(&VN{}, &User{})

    DB = db
}

And then, I ran docker-compose up --build .然后,我运行docker-compose up --build Here's the result of the command:这是命令的结果:

Successfully built 1239cf1fceea
Successfully tagged vnlist_web:latest
Creating vnlist_db_1 ... done
Creating vnlist_web_1 ... done
Attaching to vnlist_db_1, vnlist_web_1
db_1   | The files belonging to this database system will be owned by user "postgres".
db_1   | This user must also own the server process.
db_1   |
db_1   | The database cluster will be initialized with locale "en_US.utf8".
db_1   | The default database encoding has accordingly been set to "UTF8".
db_1   | The default text search configuration will be set to "english".
db_1   |
db_1   | Data page checksums are disabled.
db_1   | 
db_1   | fixing permissions on existing directory /var/lib/postgresql/data ... ok
db_1   | creating subdirectories ... ok
db_1   | selecting default max_connections ... 100
db_1   | selecting default shared_buffers ... 128MB
db_1   | selecting default timezone ... Etc/UTC
db_1   | selecting dynamic shared memory implementation ... posix
db_1   | creating configuration files ... ok
web_1  | Revel executing: run a Revel application
db_1   | running bootstrap script ... ok
db_1   | performing post-bootstrap initialization ... ok
db_1   | syncing data to disk ... ok
db_1   |
db_1   | Success. You can now start the database server using:
db_1   |
db_1   |     pg_ctl -D /var/lib/postgresql/data -l logfile start
db_1   |
db_1   |
db_1   | WARNING: enabling "trust" authentication for local connections
db_1   | You can change this by editing pg_hba.conf or using the option -A, or
db_1   | --auth-local and --auth-host, the next time you run initdb.
db_1   | waiting for server to start....2021-01-18 14:25:35.070 UTC [47] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
db_1   | 2021-01-18 14:25:35.437 UTC [48] LOG:  database system was shut down at 2021-01-18 14:25:30 UTC
db_1   | 2021-01-18 14:25:35.530 UTC [47] LOG:  database system is ready to accept connections
db_1   |  done
db_1   | server started
web_1  | WARN  14:25:35 harness.go:175: No http.addr specified in the app.conf listening on localhost interface only. This will not allow external access 
to your application
web_1  | Changed detected, recompiling
db_1   | CREATE DATABASE
db_1   |
db_1   |
db_1   | /usr/local/bin/docker-entrypoint.sh: ignoring /docker-entrypoint-initdb.d/*
db_1   |
db_1   | waiting for server to shut down....2021-01-18 14:25:39.271 UTC [47] LOG:  received fast shutdown request
db_1   | 2021-01-18 14:25:39.420 UTC [47] LOG:  aborting any active transactions
db_1   | 2021-01-18 14:25:39.424 UTC [47] LOG:  background worker "logical replication launcher" (PID 54) exited with exit code 1
db_1   | 2021-01-18 14:25:39.424 UTC [49] LOG:  shutting down
db_1   | .2021-01-18 14:25:41.059 UTC [47] LOG:  database system is shut down
db_1   |  done
db_1   | server stopped
db_1   | 
db_1   | PostgreSQL init process complete; ready for start up.
db_1   |
db_1   | 2021-01-18 14:25:41.178 UTC [1] LOG:  listening on IPv4 address "0.0.0.0", port 5432
db_1   | 2021-01-18 14:25:41.178 UTC [1] LOG:  listening on IPv6 address "::", port 5432
db_1   | 2021-01-18 14:25:41.445 UTC [1] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
db_1   | 2021-01-18 14:25:41.906 UTC [75] LOG:  database system was shut down at 2021-01-18 14:25:40 UTC
db_1   | 2021-01-18 14:25:42.031 UTC [1] LOG:  database system is ready to accept connections
web_1  | Parsing packages, (may require download if not cached)... Completed
web_1  | INFO  14:27:12    app     run.go:35: Running revel server
web_1  | INFO  14:27:12    app   plugin.go:9: Go to /@tests to run the tests.
web_1  | 
web_1  | 2021/01/18 14:27:12 /goprojects/vnlist/app/models/DbSetup.go:24
web_1  | [error] failed to initialize database, got error failed to connect to `host=localhost user=postgres database=vnlist_db`: dial error (dial tcp [::1]:5432: connect: cannot assign requested address)
web_1  | DB Error:  failed to connect to `host=localhost user=postgres database=vnlist_db`: dial error (dial tcp [::1]:5432: connect: cannot assign requested address)
web_1  | 
web_1  | 2021/01/18 14:27:12 /root/go/pkg/mod/gorm.io/driver/postgres@v1.0.6/migrator.go:157 failed to connect to `host=localhost user=postgres database=vnlist_db`: dial error (dial tcp [::1]:5432: connect: cannot assign requested address)
web_1  | [0.659ms] [rows:0] CREATE TABLE "vns" ("id" bigserial,"created_at" timestamptz,"updated_at" timestamptz,"deleted_at" timestamptz,"title" text,"genre" text,"original_language" text,"translated" boolean,PRIMARY KEY ("id"))
web_1  | 
web_1  | 2021/01/18 14:27:12 /root/go/pkg/mod/gorm.io/driver/postgres@v1.0.6/migrator.go:130 failed to connect to `host=localhost user=postgres database=vnlist_db`: dial error (dial tcp [::1]:5432: connect: cannot assign requested address)
web_1  | [1.093ms] [rows:0] CREATE INDEX "idx_vns_deleted_at" ON "vns" ("deleted_at")
web_1  | Revel engine is listening on.. localhost:35495
web_1  |
web_1  | Time to recompile 1m36.9527518s
web_1  | Revel proxy is listening, point your browser to : 9000

As we can see on the last few lines, the database failed to connect.正如我们在最后几行中看到的,数据库连接失败。
I've tried to change the DB's credential but the problem persists.我试图更改数据库的凭据,但问题仍然存在。
My question is, how to fix this?我的问题是,如何解决这个问题?

Your DB_HOST would be the name of the database service DB_HOST = "db" instead of "localhost"您的 DB_HOST 将是数据库服务的名称DB_HOST = "db"而不是 "localhost"

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Django没有使用docker-compose连接到postgresql数据库 - Django doesn't connect to postgresql database using docker-compose 无法使用 docker-compose 连接到 postgresql - Cant connect to postgresql with docker-compose Flask 无法将 postgresql 与 docker-compose 连接 - flask can not connect postgresql with docker-compose 如何使用docker-compose连接到PostgreSQL? - How to connect to PostgreSQL using docker-compose? 无法使用 docker-compose 连接到 Postgres 数据库 - Can't connect with docker-compose to Postgres database Docker-compose:应用程序容器无法连接到 Postgres - Docker-compose: App container can't connect to Postgres 连接postgresql docker配置docker-compose的容器 - Connect to postgresql docker container configured with docker-compose 连接Postgresql数据库远程服务器ubuntu服务器(Docker-Compose)和Node.js express后端 - Connect Postgresql database remote server ubuntu server (Docker-Compose) and Node.js express backend 通过 docker-compose 连接 Spring Cloud DataFlow 和 Postgresql-db - connect Spring Cloud DataFlow and Postgresql-db by docker-compose 如何使用非默认数据库名称、用户名和密码自定义包含 odoo 应用程序的 docker-compose 和 postgresql? - How to customise docker-compose containing the odoo app and postgresql with non default database name, user name and password?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM