关于docker-compose:解决-dockercompose-配置postgresql中登陆失败的错误

9次阅读

共计 829 个字符,预计需要花费 3 分钟才能阅读完成。

问题: 运行完 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 同时进行删除

此时再应用用户名明码进行登陆就能够失常登陆了

正文完
 0