gpt4 book ai didi

java - Spring Boot 使用 Docker 从外部文件夹获取图像

转载 作者:行者123 更新时间:2023-12-02 18:04:47 24 4
gpt4 key购买 nike

我有一个已包含图像的文件夹。用户可以添加/更新/删除带有对象的图像。问题是当我对我的应用程序进行 dockerize 时,获取我的 docker 镜像的用户也会获取包含图像的文件夹(我有一个存储 image.png 的文件夹)?如果不是,我如何确保它也在 docker 内获取该文件夹。

[这个问题已经解决了]我的问题是在 Docker 内部我不知道如何向我的角度应用程序显示这些图像。

这是我的 dockerfile:

FROM openjdk:17
ENV APP_HOME=/usr/app/
WORKDIR $APP_HOME
ADD target/Nation-0.0.1-SNAPSHOT.jar target/springboot-docker-county.jar
EXPOSE 8090
CMD ["java", "-jar", "target/springboot-docker-county.jar"]

这是我的 jetty worker 撰写的:

services:
db:
image: mongo:latest
ports:
- 27017:27017
environment:
SPRING_DATA_MONGODB_URI: mongodb://host.docker.internal:27017
MONGO_INITDB_ROOT_USERNAME: user
MONGO_INITDB_ROOT_PASSWORD: pass
volumes:
- ./mongo-init.js:/docker-entrypoint-initdb.d/mongo-init.js:r
web:
build: ./WorldBE/target/classes/county-fe
ports:
- 80:80
api:
build: ./WorldBE
ports:
- 8090:8090
volumes:
- ./images/:/usr/app/application/images

volumes:
county:

这是我的 application.yml 来获取文件夹:

spring:
web:
resources:
static-locations: /usr/app/application/images

这里我如何执行添加方法(它有效):

 public void saveFile(String region, Integer id, Binary image) throws Exception {
Path url = Paths.get( pathToSave);
if (image != null) {
File fileToSave = new File(url +"/"+ this.regional(region, id) + ".png");
if (fileToSave.exists()) {
log.error("Image for {} and regional: {} already exist! file: {}", id, region, fileToSave);
throw new Exception(String.format("Image for : %s and region: %s already exist!", id, region));
}

if (!fileToSave.exists()) {
log.info("file doesn't exist: {}", fileToSave);
}
// Try-with-resource
try (OutputStream out = new FileOutputStream(fileToSave)) {
out.write(image.getData());
out.flush();
log.info("file saved: {}", fileToSave);
} catch (IOException e) {
e.printStackTrace();
}
} else {
log.error("No image set");
}

用户在拉取图像时已经填充了挂载(带有 image.png 的文件夹),还是我应该做其他事情来将此文件夹存储在 docker 中?

最佳答案

将包含图像的文件夹移动到资源/静态文件夹中,而不是在 docker 文件中(在 MKDIR 之后)添加:

ADD src/main/resources/static/images application/images

并从 docker-compose 中删除:

  volumes:
- ./images/:/usr/app/application/images

关于java - Spring Boot 使用 Docker 从外部文件夹获取图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73552304/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com