gpt4 book ai didi

docker - 如何解决postgresql docker容器挂载nfs卷时的chown权限问题?

转载 作者:行者123 更新时间:2023-12-02 07:25:36 37 4
gpt4 key购买 nike

我正在 Mac 上使用 docker,并尝试使用 nfs 卷获取 postgresql 数据库的持久容器。

我在 /etc/exports 中放入一行 /Users/me/db -alldirs *(rw,sync,no_subtree_check,no_root_squash) 并重新启动 nfsd。我认为(如果我错了请纠正我)关键点是 no_root_squash 它将允许客户端 root 用户仍然是 root 用户。然后在我的 docker-compose.yml 中,我将 nfsmount 点声明为以下内容:

version: '2'
volumes:
nfsmountdbdata:
driver: local
driver_opts:
type: nfs
o: addr=host.docker.internal,rw,nolock,hard,nointr,nfsvers=3
device: ":/Users/me/db/data"
nfsmountdbinit:
driver: local
driver_opts:
type: nfs
o: addr=host.docker.internal,rw,nolock,hard,nointr,nfsvers=3
device: ":/Users/me/db/initdb"
services:

## POSTGRES DATABASE
db:
image: postgres:9.6
privileged: true
volumes:
#- ./services/db/initdb:/docker-entrypoint-initdb.d
#- ./services/db/app:/var/lib/postgresql/data
- nfsmountdbinit:/docker-entrypoint-initdb.d
- nfsmountdbdata:/var/lib/postgresql/data
ports:
- 5432:5432

但是当容器数据库启动时,它会提示很多关于chown:更改'/var/lib/postgresql/data/base/**/**'的所有权:不允许操作。这让我感到非常困惑,因为我做了一些事情(nfs 中的 no_root_squash 配置)来修复它。但它就是行不通。我这里的理解有什么问题吗?我正在使用 Mac Mojave 和适用于 Mac 2.0.0.0 稳定版的 Docker 桌面。

最佳答案

您不需要创建新镜像来更改用户,只需以其他用户身份运行 postgres 镜像即可:

  postgres:
image: postgres:9.6
environment:
- PGDATA=/var/lib/postgresql/data/pgdata
user: "${UID:?You must do 'export UID' to launch}:${GID:?You must do 'export GID' to launch}"
volumes:
- nfsmountdbdata:/var/lib/postgresql/data
ports:
- 5432:5432

关于docker - 如何解决postgresql docker容器挂载nfs卷时的chown权限问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53682810/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com