gpt4 book ai didi

bash - Docker Alpine 以另一个用户身份执行命令

转载 作者:行者123 更新时间:2023-12-05 02:31:23 25 4
gpt4 key购买 nike

我在使用运行 Spring 引导应用程序的 amazoncorretto-alpine 图像时遇到问题。为了启动容器,我使用了一个特定的 bash 脚本(连同其他东西)尝试运行 Spring boot 应用程序的可执行 jar。

我需要以不同的用户运行可执行 jar,因此当 bash 脚本以 root 运行时,“java -jar springBoot.jar”必须以“spring”用户身份执行。

在 docker 文件中,已经创建了一个用户和一个组,并为 springBoot.jar 授予了权限,如下所示:

...
RUN addgroup -S spring && adduser -S -D spring -G spring
RUN chown spring:spring springBoot.jar
...
CMD ["myBash.sh"]

用户和组存在,文件权限配置正确,容器通过执行 myBash.sh 启动。

在以“root”权限运行的 bash 中,我使用此命令行与另一个用户一起执行 jar:

su - spring -c "java -jar springBoot.jar"

我通过将 -c “命令”放在用户之前做了一些其他测试,但错误始终相同:

"The Account is not available"

此消息在启动容器时打印在 Docker 控制台中。

图片中的Alpine版本:

"Alpine Linux v3.15"

注意:如果我删除上面的指令“su - spring...”并在 bash 脚本中运行 java -jar springBoot.jar 一切正常,但应用程序以 root 启动(正如预期的那样)。

有人知道可能是什么问题吗?

最佳答案

与其直接在 docker 文件中创建用户,不如尝试像这样在脚本中创建它

adduser -D spring -g "test" -s /bin/sh -D spring

然后切换用户

su -s /bin/bash spring  <<EOF
java -jar java_file.jar
EOF

关于bash - Docker Alpine 以另一个用户身份执行命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71557316/

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