【发布时间】:2022-01-27 12:11:11
【问题描述】:
我知道很多问题听起来像这样,而且他们都有相同的答案:删除你的卷以强制它重新初始化。
问题是,我很小心地删除了我的卷,但它每次都错误地旋转容器。
我的 docker-compose.yml
version: "3.1"
services:
db:
environment:
- POSTGRES_DB=mydb
- POSTGRES_PASSWORD=changeme
- POSTGRES_USER=myuser
image: postgres
我的过程:
$ docker volume ls
DRIVER VOLUME NAME
$ docker-compose up -v # or docker-compose up --force-recreate
但它总是创建“postgres”用户而不是myuser。启动时的输出显示它“将由用户'postgres'拥有”,我只能将 docker exec 作为 postgres,而不是我的用户。
说明看起来很简单。我错过了什么,还是这是一个错误?
当你使用上面的 compose 文件时会发生什么?
【问题讨论】:
-
因为它应该是这样的。请参阅此处postgres image 并阅读
POSTGRES_USER部分。 -
你的意思是它创建了一个名为“postgres”的数据库用户,还是一个名为“postgres”的Linux用户?据我所知,
POSTGRES_USER变量只控制第一件事,在官方 Docker 镜像中没有办法控制第二件事。 -
看来您可能根本不需要
docker exec。 “在数据库中获取 shell”似乎不是一个普通的用例,如果你这样做,只要文件系统权限匹配,你是什么 Linux 用户就无关紧要了。我不会担心这个用例,只需使用psql或语言原生客户端库连接到数据库。
标签: postgresql docker docker-compose