【发布时间】:2019-06-03 08:57:39
【问题描述】:
我是 docker 新手。我想在 Docker 中为 Java 应用程序添加几个证书。我在 Dockerfile 中使用此代码:
RUN keytool -importcert -noprompt -trustcacerts -alias artifactory -file /files/cert.crt -keystore local -storepass changeit
它工作正常,但仅适用于一个证书。如何使用一行命令或在某个周期或使用 bash 文件从 /files 文件夹添加所有证书?
更新:我使用下一个 bash 添加证书:
for cert in ${tempdir}/*.crt; do
cert2=$(basename $cert)
echo "# ${cert2}" >> ${destdir}/${cert2}
${openssl} x509 -inform der -in ${cert} -outform pem -out ${destdir}/${cert2}
keytool -importcert -noprompt -trustcacerts -alias artifactory -file /${destdir}/${cert2} -keystore local -storepass changeit
done
但出现下一个错误:“keytool:找不到命令”。当我在 docker 容器中运行命令 keytool 时,它可以正常工作。
【问题讨论】:
-
在构建计算机上安装 jdk/jre,它有 keytool 可执行文件。
-
Java 已安装。我可以在 docker 容器中手动运行 keytool。但是当我尝试通过 bash 执行此操作时,我得到了错误。可能是 bash 文件中的语法错误。
-
很可能是路径问题。在终端尝试
which keytool,找出可执行文件的位置。 -
你对 java 的看法是对的。我仔细检查了我的代码,发现在调用 bash 代码之后安装了 java。它现在正在工作。
标签: java docker ssl-certificate dockerfile