postgresql - 如何使用Netcat查看postgresql docker容器是否启动

标签 postgresql docker docker-compose netcat

我想使用 Netcat 实用程序查看带有 PostgreSQL 的 docker 容器是否准备就绪。

我的 entrypoint.sh 脚本似乎无法发现正在运行的数据库。 当我登录到 docker 并以详细模式运行 NC 时,我得到了

DNS fwd/rev 不匹配:db != telegram_messages_db_1.telegram_messages_default

我做错了什么?

我的设置

入口点.sh

echo "Waiting for postgres..."

while ! nc -z db 5432; do
  sleep 0.1
done

echo "PostgreSQL started"

docker-compose.yaml

version: '3.7'

services:

  messages:
    build:
      context: .
      dockerfile: Dockerfile
    entrypoint: ['/usr/src/app/entrypoint.sh']  # new
    volumes:
      - .:/usr/src/app
    ports:
      - 5001:5000
    environment:
      .....
    depends_on:
      - db

  db:
    build:
      context: ./backend/db
      dockerfile: Dockerfile
    expose:
      - 5432
    environment:
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=postgres      

docker-compose 输出

Attaching to telegram_messages_db_1, telegram_messages_messages_1
messages_1  | Waiting for postgres...
db_1        | 
db_1        | PostgreSQL Database directory appears to contain a database; Skipping initialization
db_1        | 
db_1        | 2020-03-29 23:55:22.103 UTC [1] LOG:  starting PostgreSQL 12.2 on x86_64-pc-linux-musl, compiled by gcc (Alpine 9.2.0) 9.2.0, 64-bit
db_1        | 2020-03-29 23:55:22.103 UTC [1] LOG:  listening on IPv4 address "0.0.0.0", port 5432
db_1        | 2020-03-29 23:55:22.104 UTC [1] LOG:  listening on IPv6 address "::", port 5432
db_1        | 2020-03-29 23:55:22.115 UTC [1] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
db_1        | 2020-03-29 23:55:22.170 UTC [20] LOG:  database system was shut down at 2020-03-29 23:46:56 UTC
db_1        | 2020-03-29 23:55:22.190 UTC [1] LOG:  database system is ready to accept connections

还有……

如果我运行 nc -z -v telegram_messages_db_1.telegram_messages_default 5432 我确实得到了很好的回应:

telegram_messages_db_1.telegram_messages_default [172.19.0.2] 5432 (postgresql) open

最佳答案

删除所有容器,重新启动并从头开始构建解决了这个问题。

为了后代,我会把它留在这里。

关于postgresql - 如何使用Netcat查看postgresql docker容器是否启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60923012/

相关文章:

sql - 如何在同一个查询中查询两个链接表?

sql - 没有表格的映射值

docker - 在Docker容器之间进行通讯的最佳实践

docker - 由于 EADDRNOTAVAIL,Fluent-bit 无法将日志发送到 docker 中的 fluentd

docker - 如何从父主机解析Docker主机名?

postgresql - Postgres pg_trgm 模块中的相似度是如何计算的

sql - 迭代删除重复记录

docker - kube-dns 无法解析 'kubernetes.default.svc.cluster.local'

powershell - 使用 Powershell 编写的环境变量仅需 1 行

docker - 如何将我的服务公开给内部 docker 网络?