问题: 运行完docker容器后无法正常登陆
docker-compose:
version: '3.1'
services:
db:
image: postgres:12.10
restart: always
environment:
POSTGRES_USER: druser
POSTGRES_PASSWORD: abc123@
POSTGRES_DB: data_recorde
volumes:
- ./data:/var/lib/postgresql/data
ports:
- 5432:5432
理论上来说运行以上的doccker-compose文件之后就可以直接根据所设置的用户名密码来登陆postgresql,但是尝试了很多此却总是报如下错误:
用户名、密码不匹配,但是在其他人的设备上却没有问题。
经检查docker容器也正常启动并且在运行中。
起初怀疑是docker版本或是docker-compose的问题,但是经过和他人比对发现版本差距不大,应该不是版本的问题。
后来又尝试打印容器运行日志
根据报错查询后也没有找到合适的方法。
后来又发现在执行docker-compose时会根据volumes生成对应文件夹,而这个文件夹时用来存储数据库文件的。而我们登陆认证的角色理论上就存储在数据库中。
所以猜测可能和这个有关,又根据这个关键词进行搜索发现,docker-compose在执行时会根据volumes(卷)生成相应的文件夹,但是如果对docker-compose进行更改后再重新运行docker-compose并不会同时更新其对应的volumes中的内容,也就是说如果之前已经用此文件夹进行过初始化,那么更改配置后仍然用此文件夹很有可能发生冲突。
所以我们要做的就是
删除`data`文件夹 -> 删除容器 -> 重新运行docker-compose
删除容器:
sudo docker rm -v 'containerName'
-v表示连带其volums同时进行删除
此时再使用用户名密码进行登陆就可以正常登陆了
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。