Docker root 拥有的卷目录(不使用 Dockerfile)
Docker volume directories owned by root (not using Dockerfile)
我正在通过 Payara Server (micro) 在 docker 容器中部署一个 java 网络应用程序。
为了简化部署,我不打算通过 Docker 文件使用自定义 Docker 图像,而只是通过 docker run
命令启动我的应用程序。
我目前正在使用 3 个不同的卷:
- 一个用于将我的 .war 文件部署到自动部署文件夹 /opt/payara/deployments
- 一个用于我的 Java 应用程序使用的配置文件 (.properties)
- 一个用于收集日志
问题是卷创建的文件夹都归 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.
我正在通过 Payara Server (micro) 在 docker 容器中部署一个 java 网络应用程序。
为了简化部署,我不打算通过 Docker 文件使用自定义 Docker 图像,而只是通过 docker run
命令启动我的应用程序。
我目前正在使用 3 个不同的卷:
- 一个用于将我的 .war 文件部署到自动部署文件夹 /opt/payara/deployments
- 一个用于我的 Java 应用程序使用的配置文件 (.properties)
- 一个用于收集日志
问题是卷创建的文件夹都归 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.