我有Dockerfile
以下内容CMD
来启动我的春季启动应用程序:
FROM java:8-jre
# ...
CMD ["java", "-jar", "/app/file*.jar"]
Run Code Online (Sandbox Code Playgroud)
当我尝试从创建的图像启动容器时,我得到:
Error: Unable to access jarfile /app/file*.jar
Run Code Online (Sandbox Code Playgroud)
但是当我重写CMD
启动容器并在容器中执行命令时,一切正常:
docker run -it <imageId> bash
root@<containerId>:/app# java -jar /app/file*.jar
<spring boot app starts...>
Run Code Online (Sandbox Code Playgroud)
是否可以使用通配符和java -jar
命令使用docker CMD?请不要告诉我不要使用通配符.我想用它原因;-)
更新 根据答案,我能够解决它:
CMD ["/bin/sh", "-c", "java -jar /app/file*.jar"]
Run Code Online (Sandbox Code Playgroud) 我有一个 MongoDB,它存储一个 csv 文件和两个微服务(Spring Boot 应用程序)。一个微服务处理文件上传并支持将这些文件作为流获取。另一个微服务处理文件。这些微服务是分开的,因为我可能想稍后以另一种方式存储文件而不是在 MongoDB 中,我不想因此影响其他服务。
我的问题是,当文件服务将文件作为 InputStreamResource 返回时,如下所示:
@RequestMapping(value = "/upload/{importId}", method = RequestMethod.GET)
@ResponseBody
public ResponseEntity<InputStreamResource> getUploadedFile(@PathVariable("importId") String importId)
throws ImportFileNotFoundException {
GridFSDBFile file = FileImportClient.getInstance().getFile(importId);
return ResponseEntity
.ok()
.contentLength(file.getLength())
.body(new InputStreamResource(file.getInputStream()));
}
Run Code Online (Sandbox Code Playgroud)
我想从它已经关闭的流中读取。
ResponseEntity<InputStreamResource> response = restTemplate
.getForEntity("http://upload-service/upload/" + importId, InputStreamResource.class);
BufferedReader fileReader = new BufferedReader(new InputStreamReader(response.getBody().getInputStream()));
for (CSVRecord record : CSVFormat.DEFAULT.parse(fileReader)) {/*toStuff()*/}
Run Code Online (Sandbox Code Playgroud)
我得到了java.io.IOException: Stream closed
由 parse 方法引起的。
如果我只是curl localhost:<port>/upload/<importId>
得到整个 csv 文件。有谁知道,为什么 InputStream 被关闭以及如何解决这个问题?
堆栈跟踪:
java.io.IOException: Stream closed
at java.io.BufferedInputStream.getBufIfOpen(BufferedInputStream.java:170)
at …
Run Code Online (Sandbox Code Playgroud) 我有一个Kubernetes集群,想知道我的容器使用多少磁盘空间。我不是在谈论已安装的卷。
我可以通过使用docker命令(例如docker system df -v
或)来获取此信息docker ps -s
,但我不想连接到每个工作节点。
有没有办法通过获取容器的磁盘使用率,kubectl
还是有kubelet指标可以从中获取此信息?
我想重命名我的k8s Secrets
并想检查是否有未使用的Secrets
.另外我想知道有多少和哪些containers
参考了Secret
.
有没有比在所有部署中搜索机密名称更简单的方法?
java ×2
kubectl ×2
kubernetes ×2
docker ×1
mongodb ×1
prometheus ×1
spring ×1
spring-boot ×1
spring-mvc ×1