Docker root 拥有的卷目录(不使用 Dockerfile)

Docker volume directories owned by root (not using Dockerfile)

我正在通过 Payara Server (micro) 在 docker 容器中部署一个 java 网络应用程序。

为了简化部署,我不打算通过 Docker 文件使用自定义 Docker 图像,而只是通过 docker run 命令启动我的应用程序。

我目前正在使用 3 个不同的卷:

问题是卷创建的文件夹都归 root 所有,因此 Payara 无法访问。

例如,configuration.properties 文件进入默认情况下在 payara/micro 映像中不存在的 /etc 文件夹,因此它由卷自动创建,但根目录为所有者而不是 Payara。

我想知道是否有无需创建特定 Docker 文件即可解决此问题的方法。我已经构建了一个自定义图像,我在 Docker 文件中使用 运行 命令来创建这些目录,但这不是我在这里尝试做的。

这是我目前正在使用的 docker 运行 命令:

docker run -dp 8080:8080 --name app -e KEY1="1" -e KEY2="2" -v $(pwd)/app.war:/opt/payara/deployments/app.war -v $(pwd)/configuration.properties:/opt/payara/etc/my-app/configuration.properties -v $(pwd)/logs:/opt/payara/var/my-app/api/log payara/micro

-u 参数作为特定用户提供给 运行 命令到 运行 容器,在本例中为 root.但是,运行不建议将容器作为 root。

-u="", --user="": Sets the username or UID used and optionally the groupname or GID for the specified command.

The followings examples are all valid:
--user=[ user | user:group | uid | uid:gid | user:gid | uid:group ]

Here 是 docker 文档 link.