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

如何从主主机访问docker postgres数据库

吴涵育
2023-03-14

我有一个docker compose文件,看起来像:

version: "3"
services:
    redis:
        image: 'redis:3.2.7'
        # command: redis-server --requirepass redispass

    postgres:
        image: postgres:9.6
        ports:
            - "5432:5432"
        environment:
            - POSTGRES_USER=airflow
            - POSTGRES_PASSWORD=airflow
            - POSTGRES_DB=airflow
#            - PGDATA=/var/lib/postgresql/data


    webserver:
        image: airflow:develop
        depends_on:
            - postgres

        ports:
            - "8080:8080"

        command:
            - webserver

运行docker-compose up之后,我看到所有的服务都启动了,并且看起来工作良好。我的WebServer服务使用以下sqlalchemy连接字符串连接到postgres:PostgreSQL+Psycopg2:/airflow:airflow@postgres/airflow

 8:49AM /Users/paymahn/solvvy/scheduler gitlab-ci ✚ ◼
 ❮❮❮ psql -h postgres -p 5432 -U airflow
psql: could not translate host name "postgres" to address: nodename nor servname provided, or not known
 8:50AM /Users/paymahn/solvvy/scheduler  ✘ 2 gitlab-ci ✚ ◼
 ❯❯❯ psql -h localhost -p 5432 -U airflow
psql: FATAL:  database "airflow" does not exist
 8:51AM /Users/paymahn/solvvy/scheduler  ✘ 2 gitlab-ci ✚ ◼
 ❯❯❯ psql -h localhost -p 5432 -U postgres
psql: FATAL:  role "postgres" does not exist

编辑:这是在接受的解决方案中的一个评论中回答的,但我认为值得在这里指出:我已经在本地运行postgres,这引起了各种混乱。

10:12AM /Users/paymahn/solvvy/scheduler gitlab-ci ✚ ◼
 ❯❯❯ ps aux | rg postgres
paymahn          11705   0.0  0.0  4485040    596   ??  Ss   13Feb18   0:00.17 postgres: bgworker: logical replication launcher
paymahn          11704   0.0  0.0  4339972    680   ??  Ss   13Feb18   0:13.88 postgres: stats collector process
paymahn          11703   0.0  0.0  4485040   1404   ??  Ss   13Feb18   0:02.72 postgres: autovacuum launcher process
paymahn          11702   0.0  0.0  4486064    116   ??  Ss   13Feb18   0:06.42 postgres: wal writer process
paymahn          11701   0.0  0.0  4476848    204   ??  Ss   13Feb18   0:02.62 postgres: writer process
paymahn          11700   0.0  0.0  4486064    228   ??  Ss   13Feb18   0:00.58 postgres: checkpointer process
paymahn          11698   0.0  0.0  4478128    592   ??  S    13Feb18   0:12.09 /usr/local/Cellar/postgresql/10.2/bin/postgres -D /usr/local/var/postgres
paymahn          92143   0.0  0.0  4262040     24 s011  S+   10:12AM   0:00.00 rg postgres

删除我的本地postgres实例并更新我的hosts文件,就像接受的答案中提到的那样,一切都清除了。

共有1个答案

祁增
2023-03-14

只需将127.0.0.1 postgres添加到本地PC上的hosts文件中,然后使用命令psql-h postgres-p 5432-u airflow

 类似资料:
  • 问题内容: 如果我在某个主机上运行mysql数据库,并且该主机也正在运行docker容器:我如何从主机上运行的docker容器中访问mysql数据库? 例如,是否有一种方法可以将主机端口发布到容器(与docker run -p的作用相反)? 问题答案: 关于如何以一致的,易于理解的和可移植的方式执行此操作的问题已有很长时间的讨论。尚无完整的解决方案,但我会将您链接到下面的讨论。 无论如何,您都想尝

  • 我尝试使用IP地址192.168.56.1从我的应用程序连接到主机,但没有成功。我签入了,并且有一个Virtualbox与上述IP连接。有人能帮忙修一下吗?

  • 问题内容: 我有一个运行詹金斯的码头集装箱。作为构建过程的一部分,我需要访问在主机上本地运行的Web服务器。是否可以将主机Web服务器(可以配置为在端口上运行)暴露给jenkins容器? 编辑:我正在Linux机器上本地运行docker。 更新: 除了下面的@larsks答案之外,要从主机获取主机IP的IP地址,我还要执行以下操作: 问题答案: 在Linux上本地运行Docker时,您可以使用接口

  • 我有一个docker容器在运行Jenkins。作为构建过程的一部分,我需要访问在主机上本地运行的web服务器。有没有一种方法可以将主机web服务器(可以配置为在端口上运行)公开给jenkins容器? 编辑:我正在Linux机器上原生运行docker。 更新: 除了@larsks下面的答案之外,要从主机获取主机IP的IP地址,我还做了以下操作:

  • 如果我有一个mysql数据库在某台主机上运行,并且该主机也在运行docker容器:我将如何从主机上运行的docker容器中访问mysql数据库?。 有没有一种方法可以将主机端口发布到容器(与docker run-p的功能相反)?