Springブートプロジェクトでは、デフォルトの場所をリソースフォルダに変更する必要があります。私はこのコードを使用して必要な結果を得ています:Dockerのスプリングブート静的フォルダ
@Bean
WebMvcConfigurer configurer() {
return new WebMvcConfigurerAdapter() {
@Override
public void addResourceHandlers (ResourceHandlerRegistry registry) {
String location = "file:" + System.getProperty("user.dir") + "/pictures/";
registry.addResourceHandler("/pictures/**").
addResourceLocations(location);
super.addResourceHandlers(registry);
}
};
}
私のローカルマシンでは、すべてが動作します。ときにドッキングウィンドウの画像を作成し、everyhingがOKのようですが、私は、ディレクトリ内のファイルの一部を要求しようとすると、それはこの例外をスローし、それを実行します。全体の例外のstack
2017-08-23 13:03:48.652 ERROR 8 --- [nio-8080-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception
java.net.UnknownHostException: pictures
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:184) ~[na:1.8.0_144]
at java.net.Socket.connect(Socket.java:589) ~[na:1.8.0_144]
at java.net.Socket.connect(Socket.java:538) ~[na:1.8.0_144]
at sun.net.ftp.impl.FtpClient.doConnect(FtpClient.java:964) ~[na:1.8.0_144]
at sun.net.ftp.impl.FtpClient.tryConnect(FtpClient.java:924) ~[na:1.8.0_144]
at sun.net.ftp.impl.FtpClient.connect(FtpClient.java:1019) ~[na:1.8.0_144]
at sun.net.ftp.impl.FtpClient.connect(FtpClient.java:1005) ~[na:1.8.0_144]
at sun.net.www.protocol.ftp.FtpURLConnection.connect(FtpURLConnection.java:294) ~[na:1.8.0_144]
... more logs (not sure if they are needed to find the problem)
。
画像フォルダがドッカー画像にあるかどうかと、そこにあるかどうかを確認しました。この問題の原因はわかりません。ファイルパスの前にそれがfile:
になることはできますか?私はこの変数System.getProperty("user.dir")
を別の関数で使用していますが、正しく動作するので、問題であってはいけません。
Dockerfile
FROM frolvlad/alpine-oraclejdk8:slim
VOLUME /tmp
RUN mkdir /files
ENV JAVA_OPTS="-Xmx512m -Xss512k"
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]
「画像」と呼ばれるホストへのFTP接続をしようとした場合のように、「FTPClient」から「UnknownHostException」が発生するというのは変です。 – Berger
はい、そういうわけで私はインターネット上で何かを見つけることができず、それがDockerに起因すると思っています。 – kirpt
コードの一部にFTP接続を試みていますが、それを投稿することもできます(スタックトレースにカスタムクラスのいずれかが表示されているかどうかも参照してください)。 – Berger