У меня есть контейнер API отдыха в java / spring и контейнер для службы докеров. Веб-интерфейс написан на угловом языке и обслуживается через сервер NGINX. К сожалению, вызов http://service -rest: 8080 / api / call завершается неудачно. Любые идеи по поводу этого
events {
worker_connections 4096; ## Default: 1024
}
http {
server {
listen 80;
server_name service-frontend;
root /usr/share/nginx/html;
index index.html index.htm;
include /etc/nginx/mime.types;
gzip on;
gzip_min_length 1000;
gzip_proxied expired no-cache no-store private auth;
gzip_types text/plain text/css application/json application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
location /api {
proxy_pass http://service-rest:8080;
}
}
}
Бэкэнд-контроллер
@RestController
@RequestMapping("/api")
@CrossOrigin
public class EntityController {
@Autowired
private EntityRepository entityRepository;
@GetMapping("/entities")
public ResponseEntity<Page<NumberArray>> getEntities() {
return ResponseEntity.status(HttpStatus.OK).body(entityRepository.findAll(Pageable.unpaged()));
}
@PostMapping("/entities")
public ResponseEntity<Entity> createEntity(@Valid @RequestBody Entity entity) throws JsonProcessingException {
return ResponseEntity.status(HttpStatus.OK).body(entityRepository.save(entity));
}
}
docker-compose.yaml
version: "2"
services:
service-db:
image: postgres:9.4.5
container_name: service-db
hostname: service-db
network_mode: bridge
volumes:
- service-db-data:/var/lib/postgresql/data
expose:
- 5432
ports:
- 5433:5432
environment:
- POSTGRES_PASSWORD=postgres
- POSTGRES_USER=postgres
- POSTGRES_DB=postgres
restart: unless-stopped
service-server:
build: serviceserver/.
container_name: service-server
hostname: service-server
network_mode: bridge
expose:
- 1234
ports:
- 1234:1234
restart: unless-stopped
service-rest:
build: servicerest/.
container_name: service-rest
hostname: service-rest
network_mode: bridge
expose:
- 8080
ports:
- 8080:8080
restart: unless-stopped
depends_on:
- service-db
links:
- service-db
- service-server
service-frontend:
build: servicefrontend/.
container_name: service-frontend
hostname: service-frontend
network_mode: bridge
restart: unless-stopped
ports:
- "81:80"
depends_on:
- service-rest
links:
- service-rest
volumes:
service-db-data:
Сообщение браузера Запрос на перекрестное происхождение заблокирован: Политика одинакового происхождениязапрещает чтение удаленного ресурса на http://service -rest: 8080 / api / call . (Причина: запрос CORS не выполнен). Ошибка: «Uncaught (в обещании): sf: {« headers »: {« normalizedNames »: {},« lazyUpdate »: null,« headers »: {}},« status »: 0,« statusText »:»Неизвестная ошибка "," url ":" http://service -rest: 8080 / api / call"," ok ": false," name ":" HttpErrorResponse "," message ":" Реакция отказа Httpдля http://service -rest: 8080 / api / numberarrays : 0 Неизвестная ошибка "," ошибка ": {" isTrusted ": true}}"