[RASSUS] 3. laboratorijska vježba - 2021/2022
Erpeg
Erpeg
ok, naci niti jedan servis unutar dockera ne moze vidjet drugi microservis, a tako se onda nemoze niti povezat na njega
jel netko imao ovaj problem ?
Pleomax
Erpeg
prouci docker network i kao uri eureke stavi ovako: http://[ime_eureka_kontejnera]:8761/eureka
Erpeg
Pleomax
uspio sam tako rijesit
al sad imam problem da mi se agregator registrira na eureku prije temp i humidity i onda ih nemoze nac.
a u docker-compose imam dependency temp i humidity, tako da mi se temp i humidity pokrenu prije aggr, al se ovaj konstantno kod svakog pokretanja registrira prvi na eureku
laranotreallycroft
Erpeg ja samo ne pokrecem dohvat IP s agregatora dok u eureki ne vidim da su se svi registrirali. Nez jel se to opce moze drukcije rjesit
Erpeg
laranotreallycroft
ja isto, samo sto mi iz nekog razloga i dalje ne zeli dohvatit…
pazio sam na to kako definiram ime u docker.yml fajlu, al i dalje ne radi, kaze java.lang.IllegalStateException: No instances available for temperature-microservice
iako ga ja vidim na eureka serveru
vidraKida
laranotreallycroft Daj mi reci, sada se jebem s aggregatorom jos samo. Kako mogu dohvatit sve ip adrese, jer ja sam napravio kao u ovom videu dole od lika i ne funkcionira mi na dockeru.
Erpeg
Erpeg
ono kad 3 dana samo zbog dockera debugiras ono sto inace radi…
problem je bio u restTemplate koji iz nekog razloga ne radi na dockeru… normalan http request radi, pa evo ako se netko bude mucio da zna
eee sad je problem sto mi ne zeli ucitavat git repozitorij 🥳😍
narval13068
Kako spojiti da u dockeru mikroservisi (temperatura, humidity, aggregator) vide eureka server… van dockera je ok al unutra nikako nemogu napravit da se otkriju…
RogerRoger
Dima stvori bridge mrežu: https://docs.docker.com/network/bridge/ i pokreni kontejnere na njoj, znači kad ideš pokrenuti (već stvoreni) kontejner naredbi docker run dodaš argument –net <ime-mreže>. Prethodno moraš stvoriti bridge mrežu, a možeš provjeriti je li stvorena koristeći docker network ls. Da saznaš koji su ti sve kontejneri trenutno spojeni na bridge, koristiš docker network inspect <ime-mreže>.
Ako si ovo napravio i svejedno ti ne radi (baci ti ono “no known servers” ili tako nešto), u konfiguracijskim YAML fajlovima za te servise stavi eureka:
.
client:
serviceUrl:
defaultZone: http://<eurekin-kontejner>:<port>/eureka
saitama
Jel ima detekcije plagijata na ovom predmetu i kolko su jaki?
RogerRoger
saitama ima, ne znam koliko su jaki, ali valjda ti je osjećaj srama jači 🙂
narval13068
RogerRoger Nesto san slicno tomu ako ne i isto napravia na kraju, doda sam u compose pri pokretanju novu mrezu argumentom networks s odredjenim rasponom ip adresa i samo za svaki container zada koja ce biti ip adresa i to harkodira u spring boot app.properties, koliko je to dobro neznam al bmk neman zivaca vise za ovaj labos tako da adio hahah
tata
Kak ste zamijenili ip:port s nazivom iz eureke?
U aggregatoru se spajam ovak na temperature mikroservis:
Probao sam naivno s ovim http://temperature-microservice/temperature
mislio sam da ce se nekak to mapirat
Cvija
NISAM ASISTENT
Tu sam koristio rest template i getForObject kao što je lik iz ovog videa
Meni nije radilo jer nisam restTemplate stavio da mi je @Autowired
Možda možeš napraviti i pomoću HttpRequest, ali stvarno ne znam kako, ovako sam ja riješio
Cvija
huba buba Jesi to ovako napravio? S tim da je readings.csv u resources mapi
I kako vam docker compose datoteke izgledaju, što tu krivo radim?
docker-compose-services.yml
version: "3.9"
services:
temperature-microservice:
image: temperature_1.0
ports:
- "8090:8090"
humidity-microservice:
image: humidity_1.0
ports:
- "8091:8091"
aggregate-microservice:
image: aggregate_1.0
ports:
- "8080:8080"
depends_on:
- temperature-microservice
- humidity-microservice
networks:
default:
external:
name: "microservices"
docker-compose-infrastructure.yml
version: "3.9"
services:
config-server-microservice:
image: config_1.0
ports:
- "8888:8888"
eureka-server:
image: eureka_1.0
ports:
- "8761:8761"
networks:
default:
external:
name: "microservices"
s tim da je mreža microservies stvorena s docker network create microservices
PiqueBlinders
Cvija jel ti proradilo? jedina razlika mi je da imam i network parametar u svakom od servisa.
networks:
-microservices
milanista
Jel itko ima problem da mu config server ne može pronaći lokalni repozitorij nakon što ga se pokrene preko dockera?
Ovako je definiran u application file-u: spring.cloud.config.server.git.uri: file:///C:/configrepo
Cvija
milanista da i stavio sam ga da bude na gitlabu i otad mi radi
laranotreallycroft
@Autowired
DiscoveryClient discoveryClient;`
> List<ServiceInstance> list = discoveryClient.getInstances("TEMPERATURE-MICROSERVICE");
> if (list != null && list.size() > 0) {
> ServiceInstance service1 = list.get(0);
> tempUri = URI.create(service1.getUri() + "/getTemperature");
> }
`
spring.application.name=HUMIDITY-MICROSERVICE
Cvija
zisku proradilo mi je ovako kako sam napisao, ali mi aggregate mikroservis ne očita config
vidraKida
laranotreallycroft di si to stavio u koji dio projeka?
u kontroler ili?
vidraKida
imam jeben problem, a taj je da
laranotreallycroft
ovaj kôd prepozna adrese i sve i onda kada idem slat zahtjeve dobijem neke pizdarije preko dockera tipa
http://172.23.0.4:8081
to je na aggregatoru, ima li itko ideju u cemu je problem?
tata
Cvija jel ti baca ono da ne moze ucitat bean?
Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'unit' in value "${unit}"
Ovak sam ucitavao prije dockera (i radilo je), sad mi s dockerom ne radi to