小编Ste*_*ano的帖子

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

我在使用运行 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 启动(如预期)。

任何人都知道可能是什么问题?

bash docker spring-boot docker-swarm alpine-linux

5
推荐指数
1
解决办法
4926
查看次数

标签 统计

alpine-linux ×1

bash ×1

docker ×1

docker-swarm ×1

spring-boot ×1