Не удается подтянуть изображение с запущенного в контейнере Java Spring веб-сервиса
Имеется веб-сервис, написанный на Java Spring
При GET запросе не тянется изображение, отдает 404 not found: GET http://192.168.48.3:8080/data/images/1.jpg
Где указанный адрес - адрес контейнера. Внутри контейнера /data/images/1.jpg существует
Хотя при выполнении POST запроса сервер сохраняет в папку /data/images/ файл и копирует его на смонтированную папку на хосте /data/images/
Почему он может отдавать 404? Каких настроек мне может не хватать? К тому же, если курлить внутри контейнера с сервисом данную ссылку, то так же отдает 404
Код java-контроллера:
@RestController
@RequestMapping("/images")
public class ImageController {
@Autowired
private ImageRepository imageRepository;
@Autowired
private HttpServletRequest request;
@PostMapping("/add")
public ResponseEntity<Object> addImage(@RequestParam("image_name") String name,
@RequestParam("image_tags") String tags,
@RequestParam("image_file") MultipartFile file) throws IOException {
String uploadsDir = "/data/images/";
System.out.println(file.getOriginalFilename());
String fileName = file.getOriginalFilename();
Path path = Paths.get(uploadsDir + fileName);
Files.write(path, file.getBytes());
String[] tagList = tags.split(",").clone();
String imageUrl = "/data/images/" + file.getOriginalFilename();
MyImage myImage = new MyImage(name, tagList, imageUrl, false);
MyImage savedImage = imageRepository.save(myImage);
String message = "Успешно добавлено";
HttpHeaders headers = new HttpHeaders();
headers.set("Content-Type", "application/json");
return ResponseEntity.ok()
.headers(headers)
.body("{\"message\":\"" + message + "\"}");
}
@GetMapping("/search")
public ResponseEntity<Object> search(@RequestParam("keyword") String keyword) {
System.out.println(keyword);
try {
List<MyImage> imageList = imageRepository.findByQuery(keyword);
System.out.println(imageList.get(0).getImageUrl());
return ResponseEntity.ok(imageList);
}
catch (Exception e) {
System.out.println(e.getMessage());
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build();
}
}
}
Dockerfile:
FROM openjdk:17-jdk-alpine
COPY target/project-0.0.1.jar /app/project-0.0.1.jar
RUN apk add --no-cache curl
WORKDIR /app
ENTRYPOINT ["java", "-jar", "project-0.0.1.jar"]
docker-compose:
version: '3'
services:
project:
build: .
ports:
- "8080:8080"
depends_on:
- postgres
volumes:
- /data/images:/data/images
restart: unless-stopped
postgres:
image: postgres:13.1
container_name: postgres
environment:
POSTGRES_USER: admin
POSTGRES_PASSWORD: admin
POSTGRES_DB: postgres
volumes:
- /data/postgresql:/var/lib/postgresql/data
ports:
- "5432:5432"
restart: unless-stopped