我在使用運行 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"]
用戶和組存在,檔案的權限配置正確,容器通過執行 myBash.sh 啟動。
在以“root”權限運行的 bash 中,我使用此命令列與另一個用戶一起執行 jar:
su - spring -c "java -jar springBoot.jar"
我通過將 -c“命令”放在用戶之前做了一些其他測驗,但錯誤總是相同的:
“帳戶不可用”
啟動容器時,會在 Docker 控制臺中列印此訊息。
圖中的高山版本:
《高山Linux v3.15》
注意:如果我洗掉上面的指令“su - spring....”并在 bash 腳本中運行 java -jar springBoot.jar 一切正常,但應用程式以 root 啟動(如預期的那樣)。
任何人都知道可能是什么問題?
uj5u.com熱心網友回復:
而不是直接在docker檔案中創建用戶嘗試像這樣在腳本中創建它
adduser -D spring -g "test" -s /bin/sh -D spring
然后切換用戶
su -s /bin/bash spring <<EOF
java -jar java_file.jar
EOF
uj5u.com熱心網友回復:
您可以在 Dockerfile 上指定 USER。您將在上面的此鏈接中找到所有檔案。
https://docs.docker.com/engine/reference/builder/#user
但是對于您的用例,我認為您只需要在 Dockerfile 中指定如下內容:
FROM alpine
RUN addgroup -S sprig && adduser -S -D spring -G spring
USER spring
#here you put your commands
#if you want to leave the container as an non-root user which is recommanded you then just
USER 1001
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/447751.html
