Docker/postgres - 无需密码即可访问 psql 的最简单解决方案?

Docker/postgres - simplest solution to accessing psql without a password?

我有一个 docker 容器,其中包含带有 postgis 的 postgres,我正在尝试设置它,这样我就可以使用 psql 而无需每次都传递密码。我已经用 docker 文件和所有 运行s 设置了 docker-compose.yaml,但是我该如何修改它以允许我执行 psql 命令而无需每次都传递密码?

docker-compose.yaml

version: '3'

services:
  
  pgclient:
    container_name: pg_client
    build: ./
    restart: always
    environment:
        POSTGRES_USER: docker
        POSTGRES_PASSWORD: docker
        POSTGRES_DB: test_db
    volumes:
        - ./data:/var/lib/postgresql/
        - ./raw_data:/raw_data
        - ./postgres_init:/postgres_init
    ports:
        - 5434:5434
    networks:
        - ch_ntw

networks:
  ch_ntw:
    driver: bridge
    ipam:
      config:
        - subnet: 10.222.1.0/24

Docker 文件

FROM postgres:12.4

RUN apt-get update \
    && apt-get install wget -y \
    && apt-get install postgresql-12-postgis-3 -y \
    && apt-get install postgis -y


COPY ./db.sql /docker-entrypoint-initdb.d/
COPY ./ /

ADD import_trips.sh /import_trips.sh
RUN chmod +x import_trips.sh

容器构建完成后 运行:

docker exec -it pg_client bash

然后我 运行 像这样:

psql --host=pg_client --dbname=test_db --username=docker -f postgres_init/create_schema.sql

而且我必须传递密码。如何授予超级用户权限?

马上想到的两种方式-

  • 在您的初始化脚本中创建无密码用户 (db.sql) 或
  • 使用 POSTGRES_HOST_AUTH_METHOD: trust env key-value 而不是 POSTGRES_PASSWORD(但请理解其中的含义)。