我在使用运行 Spring boot 应用程序的 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"]
Run Code Online (Sandbox Code Playgroud)
用户和组已存在,文件的权限已正确配置,并且容器通过执行 myBash.sh 启动。
在以“root”权限运行的 bash 中,我使用此命令行与另一个用户一起执行 jar:
su - spring -c "java -jar springBoot.jar"
Run Code Online (Sandbox Code Playgroud)
我通过将 -c“命令”放在用户之前进行了一些其他测试,但错误始终是相同的:
“该帐户不可用”
启动容器时,此消息会打印在 Docker 控制台中。
图中的阿尔卑斯版本:
“Alpine Linux v3.15”
注意:如果我删除上面的指令“su - spring....”并仅在 bash 脚本中运行 java -jar springBoot.jar 一切正常,但应用程序以 root 启动(如预期)。
任何人都知道可能是什么问题?