当前位置: 首页 > 知识库问答 >
问题:

无法连接到位于docker容器内的postgresql

汲永嘉
2023-03-14

我正在写一个go应用程序,它被dockerized在两个容器:db和app。

当启动容器'docker-compose up‘时,我看到消息:dial tcp:lookup dbpgsql on 127.0.0.11:53:没有这样的主机

DB_ENV_DB=cldb
DB_ENV_USER=cldb
DB_ENV_PASS=cldb
DB_PORT_5432_TCP_ADDR=dbpgsql
DB_PORT_5432_TCP_PORT=5432
version: '2'
services:
  server:
    hostname: app
    image: golang:1.7.3-alpine
    build: ./server/
    privileged: true
    container_name: server
    command: go run server.go
    volumes:
      - ../src/:/go/src/
      - ../server.go:/go/server.go
    links:
      - db:db
    ports:
     - '8080:8080'
   env_file: environment

 db:
   hostname: dbpgsql
   image: postgres:latest
   container_name: db
   environment:
      POSTGRES_USER: cldb
      POSTGRES_PASSWORD: cldb
      POSTGRES_DB: cldb
    ports:
      - '5432:5432'
   volumes:
     - ./data:/docker-entrypoint-initdb.d
func InitDB(dataSourceName string) {
    var err error
    DB, err = sql.Open("postgres", dataSourceName)
    if err != nil {
       log.Panic(err)
    }

    if err = DB.Ping(); err != nil {
       log.Panic(err)
    }

    DB.SetMaxIdleConns(100)
}

共有1个答案

司徒良哲
2023-03-14

您可以使用服务名(或在链接选项中给出的别名)连接到数据库,在您的情况下是db。选项设置容器知道自身的主机名。但是它不会出现在docker ps中,也不会出现在任何其他容器的/etc/hosts文件中。(https://docs.docker.com/engine/userguide/networking/default_network/configure-dns/)

 类似资料:
  • 要运行测试文件,Flask应用程序需要连接到Redis。我尝试将这些URL用于redis主机,如localhost:6379,redis:6379,0.0.0.0:6379,但都没有用。他们都告诉我连接错误或连接拒绝。 知道如何从jenkins docker容器中连接到redis吗?

  • 我如何在Mac本地托管的docker容器中连接到MySQL?我试图通过SequelPro连接,但甚至不能让测试连接工作。

  • 我已经创建了一个MySQL数据库的映像,并在容器中运行它。我希望它在端口3406/3407上运行,因此我调用docker run命令如下所示: 如果我看我的容器,它看起来是这样的: 我非常想连接到我的数据库现在,但我似乎不能使我的URL工作。 这是我的URL的样子:

  • 问题内容: 我有用于创建mysql映像的docker- compose文件,并将端口公开给3306,但是当我尝试安装CMS时,出现了无法连接数据库的错误。我尝试扫描端口3306,并向我显示它已打开,因此mysql正在运行。 为什么两个Docker容器彼此看不到? 这是我的docker-compose文件: 问题答案: 要连接到数据库,请使用您作为主机名提供的链接/别名。因此,您的CMS可以使用主机

  • 我从Docker开始,但是我不知道如何配置PyCharm来使用位于容器中的python解释器。 这是很容易设置与流浪汉,但显然没有正式的方式来做这件事与多克尚未。 我应该用暴露的ssh端口准备特殊的Docker映像吗?如何更容易做到这一点?

  • 我正在使用以下代码,但我的本地站点无法连接到DB docker run--name db-p 90:3306--restart=always--network wp mysql network-e mysql\u ROOT\u PASSWORD=ROOT-e mysql\u DATABASE=wordpress-e mysql\u USER=wpuser-e mysql\u PASSWORD=P@