Okey。我做的。有幾個問題,但這是最終變種的外觀。
我的碼頭。 krb5.conf和keytab與我的docker文件位於同一個文件夾中。當我建立它們加入到容器中,並在入口點的項目,我用
-Djava.security.krb5.conf
提供krb5的位置。還有一些選項用於調試+我連接mongo。
FROM java:8
ADD report.jar report.jar
ADD krb5.conf /etc/krb5.conf
ADD evkuzmin.keytab /etc/evkuzmin.keytab
RUN sh -c 'touch report.jar'
ENTRYPOINT ["java","-Dspring.data.mongodb.uri=mongodb://audpro_mongo/report","-Djavax.net.debug=all","-Dsun.security.spnego.debug=true","-Dsun.security.krb5.debug=true","-Djava.security.krb5.conf=/etc/krb5.conf","-jar","/report.jar"]
然後我用KerberosRestTemplate
連接到webhdfs
public String getReportJSON() throws URISyntaxException {
KerberosRestTemplate restTemplate = new
KerberosRestTemplate("/etc/evkuzmin.keytab", "[email protected]");
URI uri = new URI("http" + "://" + host + ":" + port + "/webhdfs/v1" + path + "?op=OPEN");
String json = restTemplate.getForObject(uri, String.class);
return json;
}
如果你想運行,而不泊塢窗的應用,只是建立它和密鑰表添加到同一方向的罐子。然後更改/etc/evkuzmin.keytab
,以便它指向新的位置。