我正在试图运行Telegram bot上的爱国者Python与PostgreSQL数据库在Ubuntu20.04服务器在码头使用码头-组合。脚本运行,但我得到
asyncpg.exceptions.InvalidPasswordError: password authentication failed for user "steamtrader_pguser"
这是我的docker-compose.yml文件:
version: "3.1"
services:
steamtraderpurchases_db:
container_name: steamtraderpurchases_db
image: sameersbn/postgresql:10-2
environment:
PG_PASSWORD: $PGPASSWORD
restart: always
ports:
- 5432:5432
networks:
- steamtraderpurchases_botnet
volumes:
- ./pgdata:/var/lib/postgresql
steamtraderpurchases_bot:
container_name: steamtraderpurchases
build:
context: .
command: python app.py
restart: always
networks:
- steamtraderpurchases_botnet
env_file:
- ".env"
volumes:
- .:/src
depends_on:
- steamtraderpurchases_db
ports:
- 8443:3001
networks:
steamtraderpurchases_botnet:
driver: bridge
以下是Dockerfile:
FROM python:3.9.5
WORKDIR /src
COPY requirements.txt /src
RUN pip install -r requirements.txt
COPY . /src
在.env文件中,我指定了:
DATABASE=steamtrader
PGUSER=steamtrader_pguser
PGPASSWORD=password
DB_HOST=steamtraderpurchases_db
IP=*ip of my server*
剩下的代码是一个电报机器人。此外,我使用SQLAlchemy和Gino创建了一个包含所需字段的数据库。这是我第一次尝试在服务器上运行机器人,所以我将非常感谢您的帮助!
UPD:我在运行docker时在日志中找到了这些行:
FATAL: password authentication failed for user "steamtrader_pguser"
DETAIL: Role "steamtrader_pguser" does not exist.
我试着创造一个角色,但什么也没成功。
发布于 2021-08-12 08:29:57
请看sameersbn/postgresql
的文档
默认情况下,没有为postgres用户分配密码,因此只能在本地登录到PostgreSQL服务器。如果希望以postgres用户的身份远程登录到PostgreSQL服务器,则需要使用PG_PASSWORD变量为用户分配密码。
上面的意思是PG_PASSWORD
的相应用户是postgres
,而不是steamtrader_pguser
。要添加一个新的用户steamtrader_pguser
,您必须遵循下面的步骤:
在启动容器时,可以通过指定PostgreSQL和DB_PASS变量来创建新的DB_PASS数据库用户。 docker -名称postgresql -itd --始终重新启动\-env 'DB_USER=dbuser‘--env 'DB_PASS=dbuserpass’\ sameersbn/postgresql:12-20200524
上面的意思是,您需要在DB_USER
和DB_PASS
中设置docker-compose.yaml
的environment
部分。
https://stackoverflow.com/questions/68753873
复制相似问题