docker-compose docker-entrypoint-initdb.d 权限被拒绝

问题描述

我正在尝试运行 puppet pupperware 套件(所有 3 个服务器/puppet 服务器/puppet DB/DB 服务器)。

我正在使用 puppetlabs 为 docker compose 提供的官方 Yaml 文件https://github.com/puppetlabs/pupperware/blob/master/docker-compose.yml

然而,当我在 docker compose 中运行该 Yaml 文件时,我遇到了以下错误(来自 docker-compose 日志):

postgres_1  | ls: cannot open directory '/docker-entrypoint-initdb.d/': Permission denied

因此,构建失败(只有 puppet 服务器启动,其他服务器没有启动)。

我的 docker 主机是在 Proxmox 环境中运行的 Fedora 33 虚拟机。 Proxmox 在物理主机上运行。

我已经禁用了 SELinux,并且我正在运行 docker (moby) rootless。我的本地用户 (uid 1000) 无需 sudo 即可运行 docker。

我相信我需要在容器中设置权限(可能通过 Dockerfile),但我不确定如何更改它,也不确定如何同时使用 Dockerfile 和 docker-compose。

感谢您的帮助

解决方法

docker-compose 文件来自 Puppet 6 时代。 Pupperware 设置当前拉取的 docker 镜像是最新的,即 Puppet 7。

通过将图像名称更改为:

,我使我预先存在的设置再次运行
puppet/puppetserver:6.14.1
postgres:9.6
puppet/puppetdb:6.13.1

也许这也适用于您。

,

好吧,既然已经一个月了,你还没有答案,我会告诉我试着用我所知道的来帮助你。

您应该在项目的根目录中放置一个 Dockerfile。它包含要由 docker 守护进程运行的命令以及由容器内的 linux 运行的命令。然后它遍历 docker-compose.yml 的内容并在那里运行命令。 所以要解决权限问题你应该添加RUN,它在Bash中执行linux命令并将数据添加到文件夹中。

也看看这个answer