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
(但请理解其中的含义)。
我有一个 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
(但请理解其中的含义)。