You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何创建自动生成目录的PostgreSQL扩展镜像?解决权限拒绝问题

解决PostgreSQL容器启动时创建目录权限拒绝问题

方法1:使用postgres用户有权限的路径修改脚本

修改postgres_entrypoint.sh中的mkdir命令,指定postgres用户有权限写入的绝对路径(比如用户家目录):

#!/bin/bash
mkdir -p /home/postgres/vorvault/nfsshare ;
# other code lines not mentioned

方法2:在构建镜像时提前创建目录并修改权限

在Dockerfile中添加创建目录并设置权限的步骤,确保postgres用户拥有该目录的读写权限:

FROM postgres:14

ENV POSTGRES_USER=postgres
ENV POSTGRES_PASSWORD=abcd1234

# 提前创建目录并修改归属为postgres用户
RUN mkdir -p /vorvault/nfsshare && chown -R postgres:postgres /vorvault

COPY postgresql.conf /etc/postgresql/postgresql.conf
COPY postgres_entrypoint.sh /docker-entrypoint-initdb.d/

CMD ["postgres", "-c", "config_file=/etc/postgresql/postgresql.conf"]

容器启动时,postgres用户就能正常写入该目录,原脚本无需修改。

问题原因说明

postgres官方镜像默认以postgres用户身份运行初始化脚本和后续服务,容器默认工作目录是/,该目录的所有权是root用户,postgres用户没有权限在其中创建新目录。

内容的提问来源于stack exchange,提问作者Pavan Varyani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 10:12:18