
āĻāϰ⧠āĻšāĻžāĻŦāϰāĨ¤
āĻāĻ āύāĻŋāĻŦāύā§āϧā§, āĻāĻŽāĻŋ āĻŽāĻžāĻāĻā§āϰā§āϏāĻžāϰā§āĻāĻŋāϏ⧠āĻĒāϰā§āĻā§āώāĻž āĻāϰāĻžāϰ āĻāύā§āϝ āĻāĻāĻāĻŋ āĻļā§āĻāĻžāϰ āĻĒāϰāĻŋāĻŦā§āĻļ āϤā§āϰāĻŋāϤ⧠āĻāĻŽāĻžāϰ āĻ āĻāĻŋāĻā§āĻāϤāĻž āϏāĻŽā§āĻĒāϰā§āĻā§ āĻāĻĨāĻž āĻŦāϞāϤ⧠āĻāĻžāĻāĨ¤ āϝāĻāύ āĻāĻŽāĻŋ āĻĒā§āϰāϤāĻŋāĻāĻŋ āύāϤā§āύ āĻā§āϞ āĻļāĻŋāĻā§āĻāĻŋ, āĻāĻŽāĻŋ āϏāĻŦāϏāĻŽāϝāĻŧ āĻāĻāĻŋ āĻļā§āϧā§āĻŽāĻžāϤā§āϰ āϏā§āĻĨāĻžāύā§āϝāĻŧ āĻŽā§āĻļāĻŋāύ⧠āύāϝāĻŧ, āĻāϰāĻ āĻŦāĻžāϏā§āϤāĻŦāϏāĻŽā§āĻŽāϤ āĻĒāϰāĻŋāϏā§āĻĨāĻŋāϤāĻŋāϤā§āĻ āĻā§āώā§āĻāĻž āĻāϰāϤ⧠āĻā§āϝāĻŧā§āĻāĻŋāϞāĻžāĻŽāĨ¤ āĻ āϤāĻāĻŦ, āĻāĻŽāĻŋ āĻāĻāĻāĻŋ āϏāϰāϞā§āĻā§āϤ āĻŽāĻžāĻāĻā§āϰā§āϏāĻžāϰā§āĻāĻŋāϏ āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύ āϤā§āϰāĻŋ āĻāϰāĻžāϰ āϏāĻŋāĻĻā§āϧāĻžāύā§āϤ āύāĻŋāϝāĻŧā§āĻāĻŋ, āϝāĻž āĻĒāϰ⧠āϏāĻŽāϏā§āϤ āϧāϰāĻŖā§āϰ āĻāĻāϰā§āώāĻŖā§āϝāĻŧ āĻĒā§āϰāϝā§āĻā§āϤāĻŋāϰ āϏāĻžāĻĨā§ "āĻāĻā§āĻāύā§āύ" āĻšāϤ⧠āĻĒāĻžāϰā§āĨ¤ āĻĒā§āϰāĻāϞā§āĻĒā§āϰ āĻāύā§āϝ āĻĒā§āϰāϧāĻžāύ āĻĒā§āϰāϝāĻŧā§āĻāύā§āϝāĻŧāϤāĻž āĻšāϞ āĻŦāĻžāϏā§āϤāĻŦ āϏāĻŋāϏā§āĻā§āĻŽā§āϰ āϏāϰā§āĻŦāĻžāϧāĻŋāĻ āĻāĻžāϰā§āϝāĻāϰ⧠āύā§āĻāĻā§āϝāĨ¤
āĻĒā§āϰāĻžāĻĨāĻŽāĻŋāĻāĻāĻžāĻŦā§, āĻāĻŽāĻŋ āĻĒā§āϰāĻāϞā§āĻĒā§āϰ āύāĻŋāϰā§āĻŽāĻžāĻŖāĻā§ āĻāϝāĻŧā§āĻāĻāĻŋ āϧāĻžāĻĒā§ āĻā§āĻā§ āĻĻāĻŋāϝāĻŧā§āĻāĻŋ:
āĻĻā§āĻāĻŋ āĻĒāϰāĻŋāώā§āĻŦāĻž āϤā§āϰāĻŋ āĻāϰā§āύ - 'āĻŦā§āϝāĻžāĻā§āύā§āĻĄ' (āĻŦā§āϝāĻžāĻāĻāύā§āĻĄ) āĻāĻŦāĻ 'āĻā§āĻāĻāϝāĻŧā§' (āĻā§āĻāĻāϝāĻŧā§), āϏā§āĻā§āϞāĻŋāĻā§ āĻĄāĻāĻžāϰ āĻāĻŽā§āĻā§ āĻĒā§āϝāĻžāĻ āĻāϰā§āύ āĻāĻŦāĻ āĻāĻāϏāĻžāĻĨā§ āĻāĻžāĻ āĻāϰāĻžāϰ āĻāύā§āϝ āϏā§āĻ āĻāĻĒ āĻāϰā§āύ
āĻā§āĻāϝāĻŧāĻžāϰā§āĻĄ: āĻāĻžāĻāĻž 11, āϏā§āĻĒā§āϰāĻŋāĻ āĻŦā§āĻ, āĻĄāĻāĻžāϰ, āĻāĻŽā§āĻ āĻ āĻĒā§āĻāĻŋāĻŽāĻžāĻāĻā§āĻļāĻžāύ
āĻā§āĻāϝāĻŧāĻžāϰā§āĻĄ: āĻā§āĻŦāĻžāϰāύā§āĻāϏ, āĻāĻŋāĻā§āĻ, āϰāĻŋāϏā§āϰā§āϏ āĻŽā§āϝāĻžāύā§āĻāĻŽā§āύā§āĻ, āĻ āĻā§āϏā§āĻā§āϞāĻŋāĻ, āϏāĻŋāĻā§āϰā§āĻāϏ
āĻāϰāĻ āĻāĻžāϞ⧠āĻā§āϞāĻžāϏā§āĻāĻžāϰ āĻŦā§āϝāĻŦāϏā§āĻĨāĻžāĻĒāύāĻžāϰ āĻāύā§āϝ Helm 3 āĻĻāĻŋāϝāĻŧā§ āĻāĻāĻāĻŋ āĻāĻžāϰā§āĻ āϤā§āϰāĻŋ āĻāϰāĻž
āĻā§āϝāĻžāĻ: āĻšā§āϞāĻŽ 3, āĻāĻžāϰā§āĻ āϏā§āĻĨāĻžāĻĒāύāĻž
āĻā§āϞāĻžāϏā§āĻāĻžāϰ⧠āĻā§āĻĄā§āϰ āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧ āĻŦāĻŋāϤāϰāĻŖā§āϰ āĻāύā§āϝ āĻā§āύāĻāĻŋāύā§āϏ āĻāĻŦāĻ āĻĒāĻžāĻāĻĒāϞāĻžāĻāύ āϏā§āĻ āĻāĻĒ āĻāϰāĻž āĻšāĻā§āĻā§
āĻā§āĻāϝāĻŧāĻžāϰā§āĻĄ: āĻā§āύāĻāĻŋāύā§āϏ āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύ, āĻĒā§āϞāĻžāĻāĻāύ, āĻāϞāĻžāĻĻāĻž āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύ āϰāĻŋāĻĒā§āĻāĻŋāĻāϰāĻŋ
āĻāĻŽāĻŋ āĻĒā§āϰāϤāĻŋāĻāĻŋ āϧāĻžāĻĒā§ āĻāĻāĻāĻŋ āĻĒā§āĻĨāĻ āύāĻŋāĻŦāύā§āϧ āĻā§āϏāϰā§āĻ āĻāϰāĻžāϰ āĻĒāϰāĻŋāĻāϞā§āĻĒāύāĻž āĻāϰāĻāĻŋāĨ¤
āύāĻŋāĻŦāύā§āϧāĻā§āϞāĻŋāϰ āĻāĻ āϏāĻŋāϰāĻŋāĻā§āϰ āĻĢā§āĻāĻžāϏ āĻā§āĻāĻžāĻŦā§ āĻŽāĻžāĻāĻā§āϰā§āϏāĻžāϰā§āĻāĻŋāϏāĻā§āϞāĻŋ āϞāĻŋāĻāϤ⧠āĻšāϝāĻŧ āϤāĻž āύāϝāĻŧ, āϤāĻŦā§ āĻā§āĻāĻžāĻŦā§ āϏā§āĻā§āϞāĻŋāĻā§ āĻāĻāĻ āϏāĻŋāϏā§āĻā§āĻŽā§ āĻāĻžāĻ āĻāϰāĻž āϝāĻžāϝāĻŧāĨ¤ āϝāĻĻāĻŋāĻ āĻāĻ āϏāĻŽāϏā§āϤ āĻāĻŋāύāĻŋāϏāĻā§āϞāĻŋ āϏāĻžāϧāĻžāϰāĻŖāϤ āĻŦāĻŋāĻāĻžāĻļāĻāĻžāϰā§āϰ āĻĻāĻžāϝāĻŧāĻŋāϤā§āĻŦā§āϰ āĻŦāĻžāĻāϰ⧠āĻĨāĻžāĻā§, āϤāĻŦā§ āĻāĻŽāĻŋ āĻŽāύ⧠āĻāϰāĻŋ āĻāĻāĻŋ āϤāĻžāĻĻā§āϰ āϏāĻžāĻĨā§ āĻĒāϰāĻŋāĻāĻŋāϤ āĻšāĻāϝāĻŧāĻž āĻāĻāύāĻ āĻāĻžāϰā§āϝāĻāϰ āĻšāĻŦā§ āĻāĻŽāĻĒāĻā§āώ⧠20% (āϝāĻž, āĻāĻĒāύāĻŋ āĻāĻžāύā§āύ, āĻĢāϞāĻžāĻĢāϞā§āϰ 80% āĻĻā§āϝāĻŧ)āĨ¤ āĻāĻŋāĻā§ āύāĻŋāĻāĻļāϰā§āϤ āĻā§āϰā§āϤā§āĻŦāĻĒā§āϰā§āĻŖ āĻŦāĻŋāώāϝāĻŧ, āϝā§āĻŽāύ āύāĻŋāϰāĻžāĻĒāϤā§āϤāĻž, āĻāĻ āĻĒā§āϰāĻāϞā§āĻĒ āĻĨā§āĻā§ āĻŦāĻžāĻĻ āĻĻā§āĻāϝāĻŧāĻž āĻšāĻŦā§, āϝā§āĻšā§āϤ⧠āϞā§āĻāĻ āĻāĻ āϏāĻŋāϏā§āĻā§āĻŽ āϏāĻŽā§āĻĒāϰā§āĻā§ āĻā§āĻŦ āĻāĻŽāĻ āĻŦā§āĻā§āύ āĻļā§āϧā§āĻŽāĻžāϤā§āϰ āĻŦā§āϝāĻā§āϤāĻŋāĻāϤ āĻŦā§āϝāĻŦāĻšāĻžāϰā§āϰ āĻāύā§āϝ āϤā§āϰāĻŋ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§ā§ˇ āĻāĻŽāĻŋ āĻā§āύ āĻŽāϤāĻžāĻŽāϤ āĻāĻŦāĻ āĻāĻ āύāĻŽā§āϞāĻ āϏāĻŽāĻžāϞā§āĻāύāĻž āϏā§āĻŦāĻžāĻāϤ āĻāĻžāύāĻžāĻ.
āĻŽāĻžāĻāĻā§āϰ⧠āϏāĻžāϰā§āĻāĻŋāϏ āϤā§āϰāĻŋ āĻāϰāĻž
āϏā§āĻĒā§āϰāĻŋāĻ āĻŦā§āĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻĒāϰāĻŋāώā§āĻŦāĻžāĻā§āϞāĻŋ āĻāĻžāĻāĻž 11 āĻ āϞā§āĻāĻž āĻšāϝāĻŧā§āĻāĻŋāϞāĨ¤ āĻāύā§āĻāĻžāϰāϏāĻžāϰā§āĻāĻŋāϏ āĻŽāĻŋāĻĨāϏā§āĻā§āϰāĻŋāϝāĻŧāĻž REST āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āϏāĻāĻāĻ āĻŋāϤ āĻšāϝāĻŧāĨ¤ āĻĒā§āϰāĻāϞā§āĻĒāĻāĻŋāϤ⧠āύā§āϝā§āύāϤāĻŽ āϏāĻāĻā§āϝāĻ āĻĒāϰā§āĻā§āώāĻž āĻ āύā§āϤāϰā§āĻā§āĻā§āϤ āĻĨāĻžāĻāĻŦā§ (āϝāĻžāϤ⧠āĻĒāϰ⧠āĻā§āύāĻāĻŋāύā§āϏ⧠āĻĒāϰā§āĻā§āώāĻž āĻāϰāĻžāϰ āĻŽāϤ⧠āĻāĻŋāĻā§ āĻāĻā§)āĨ¤ āĻĒāϰāĻŋāώā§āĻŦāĻžāĻā§āϞāĻŋāϰ āĻāύā§āϝ āĻāϤā§āϏ āĻā§āĻĄ GitHub āĻ āĻāĻĒāϞāĻŦā§āϧ: и .
āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻĒāϰāĻŋāώā§āĻŦāĻžāϰ āϏā§āĻĨāĻŋāϤāĻŋ āĻĒāϰā§āĻā§āώāĻž āĻāϰāϤ⧠āϏāĻā§āώāĻŽ āĻšāĻāϝāĻŧāĻžāϰ āĻāύā§āϝ, āϤāĻžāĻĻā§āϰ āύāĻŋāϰā§āĻāϰāϤāĻžāĻā§āϞāĻŋāϤ⧠āĻāĻāĻāĻŋ āϏā§āĻĒā§āϰāĻŋāĻ āĻ ā§āϝāĻžāĻāĻā§āϝāĻŧā§āĻāϰ āϝā§āĻā§āϤ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§āĨ¤ āĻāĻāĻŋ āĻāĻāĻāĻŋ /āĻ ā§āϝāĻžāĻāĻā§āϝāĻŧā§āĻāϰ/āϏā§āĻŦāĻžāϏā§āĻĨā§āϝ āĻāύā§āĻĄāĻĒāϝāĻŧā§āύā§āĻ āϤā§āϰāĻŋ āĻāϰāĻŦā§ āĻāĻŦāĻ āĻĒāϰāĻŋāώā§āĻŦāĻžāĻāĻŋ āĻā§āϰāĻžāĻĢāĻŋāĻ āĻā§āϰāĻšāĻŖā§āϰ āĻāύā§āϝ āĻĒā§āϰāϏā§āϤā§āϤ āĻšāϞ⧠āĻāĻāĻāĻŋ 200 āϏā§āĻā§āϝāĻžāĻāĻžāϏ āĻĒā§āϰāĻĻāĻžāύ āĻāϰāĻŦā§, āĻ āĻĨāĻŦāĻž āϝāĻĻāĻŋ āĻā§āύ āϏāĻŽāϏā§āϝāĻž āĻšāϝāĻŧ 504āĨ¤ āĻāĻ āĻā§āώā§āϤā§āϰā§, āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻŦāϰāĻ āĻāĻžāϞā§āĻĒāύāĻŋāĻ āĻā§āĻ, āϝā§āĻšā§āϤ⧠āĻĒāϰāĻŋāώā§āĻŦāĻžāĻā§āϞāĻŋ āĻā§āĻŦ āϏāĻšāĻ, āĻāĻŦāĻ āĻāĻŋāĻā§ āĻŦāϞāĻĒā§āϰāϝāĻŧā§āĻā§āϰ āĻā§āώā§āϤā§āϰā§, āϏā§āĻā§āϞāĻŋ āĻāĻāĻļāĻŋāĻāĻāĻžāĻŦā§ āĻāĻžāϞ⧠āĻĨāĻžāĻāĻžāϰ āĻā§āϝāĻŧā§ āϏāĻŽā§āĻĒā§āϰā§āĻŖāϰā§āĻĒā§ āĻ āύā§āĻĒāϞāĻŦā§āϧ āĻšāĻāϝāĻŧāĻžāϰ āϏāĻŽā§āĻāĻžāĻŦāύāĻž āĻŦā§āĻļāĻŋāĨ¤ āĻāĻŋāύā§āϤ⧠āĻŦāĻžāϏā§āϤāĻŦ āϏāĻŋāϏā§āĻā§āĻŽā§, āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰāĻž āĻāĻāĻŋ āύāĻŋāϝāĻŧā§ āϞāĻĄāĻŧāĻžāĻ āĻļā§āϰ⧠āĻāϰāĻžāϰ āĻāĻā§ Actuator āĻāĻāĻāĻŋ āϏāĻŽāϏā§āϝāĻž āύāĻŋāϰā§āĻŖāϝāĻŧ āĻāϰāϤ⧠āϏāĻžāĻšāĻžāϝā§āϝ āĻāϰāϤ⧠āĻĒāĻžāϰā§āĨ¤ āĻāĻĻāĻžāĻšāϰāĻŖāϏā§āĻŦāϰā§āĻĒ, āϝāĻĻāĻŋ āĻĄāĻžāĻāĻžāĻŦā§āϏ āĻ ā§āϝāĻžāĻā§āϏā§āϏ āĻāϰāϤ⧠āϏāĻŽāϏā§āϝāĻž āĻšāϝāĻŧ, āĻāĻŽāϰāĻž āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧāĻāĻžāĻŦā§ āĻāĻāĻāĻŋ āĻāĻžāĻāĻž āĻĒāϰāĻŋāώā§āĻŦāĻžāϰ āĻĻā§āώā§āĻāĻžāύā§āϤā§āϰ āϏāĻžāĻĨā§ āĻĒā§āϰāĻā§āϰāĻŋāϝāĻŧāĻžāĻāϰāĻŖā§āϰ āĻ āύā§āϰā§āϧāĻā§āϞāĻŋ āĻŦāύā§āϧ āĻāϰ⧠āĻāϰ āĻĒā§āϰāϤāĻŋāĻā§āϰāĻŋāϝāĻŧāĻž āĻāĻžāύāĻžāϤ⧠āĻĒāĻžāϰāĻŋāĨ¤
āĻŦā§āϝāĻžāĻ āĻāύā§āĻĄ āϏāĻžāϰā§āĻāĻŋāϏ
āĻŦā§āϝāĻžāĻāĻāύā§āĻĄ āĻĒāϰāĻŋāώā§āĻŦāĻž āĻā§āĻŦāϞ āĻāĻŖāύāĻž āĻāϰāĻŦā§ āĻāĻŦāĻ āĻā§āĻšā§āϤ āĻ āύā§āϰā§āϧā§āϰ āϏāĻāĻā§āϝāĻž āĻĢā§āϰāϤ āĻĻā§āĻŦā§āĨ¤
āĻāύā§āĻā§āϰā§āϞāĻžāϰ āĻā§āĻĄ:
@RestController
public class RequestsCounterController {
private final AtomicLong counter = new AtomicLong();
@GetMapping("/requests")
public Long getRequestsCount() {
return counter.incrementAndGet();
}
}āύāĻŋāϝāĻŧāύā§āϤā§āϰāĻ āĻĒāϰā§āĻā§āώāĻž:
@WebMvcTest(RequestsCounterController.class)
public class RequestsCounterControllerTests {
@Autowired
private MockMvc mockMvc;
@Test
public void firstRequest_one() throws Exception {
mockMvc.perform(get("/requests"))
.andExpect(status().isOk())
.andExpect(MockMvcResultMatchers.content().string("1"));
}
}āϏāĻžāϰā§āĻāĻŋāϏ āĻā§āĻāĻāϝāĻŧā§
āĻā§āĻāĻāϝāĻŧā§ āĻ āύā§āϰā§āϧāĻāĻŋ āĻŦā§āϝāĻžāĻāĻāύā§āĻĄ āĻĒāϰāĻŋāώā§āĻŦāĻžāϤ⧠āĻĢāϰā§āϝāĻŧāĻžāϰā§āĻĄ āĻāϰāĻŦā§, āĻāĻāĻŋ āύāĻŋāĻŽā§āύāϞāĻŋāĻāĻŋāϤ āϤāĻĨā§āϝā§āϰ āϏāĻžāĻĨā§ āĻĒāϰāĻŋāĻĒā§āϰāĻ āĻāϰā§:
- āĻā§āĻāĻāϝāĻŧā§ āĻāĻāĻĄāĻŋāĨ¤ āĻāĻāĻŋ āĻĒā§āϰāϝāĻŧā§āĻāύ āϝāĻžāϤ⧠āϏāĻžāϰā§āĻāĻžāϰ āĻĒā§āϰāϤāĻŋāĻā§āϰāĻŋāϝāĻŧāĻž āĻĻā§āĻŦāĻžāϰāĻž āĻā§āĻāĻāϝāĻŧā§āϰ āĻāĻāĻāĻŋ āĻāĻĻāĻžāĻšāϰāĻŖāĻā§ āĻ āύā§āϝāĻāĻŋ āĻĨā§āĻā§ āĻāϞāĻžāĻĻāĻž āĻāϰāĻž āϏāĻŽā§āĻāĻŦ āĻšāϝāĻŧ
- āĻāĻŋāĻā§ "āĻā§āĻĒāύ" āϝāĻž āĻāĻāĻāĻŋ āĻ āϤā§āϝāύā§āϤ āĻā§āϰā§āϤā§āĻŦāĻĒā§āϰā§āĻŖ āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄā§āϰ āĻā§āĻŽāĻŋāĻāĻž āĻĒāĻžāϞāύ āĻāϰāĻŦā§ (āĻāĻāĻāĻŋ āĻā§āϰā§āϤā§āĻŦāĻĒā§āϰā§āĻŖ āĻā§āĻāĻŋāϰ āĻāύāĻā§āϰāĻŋāĻĒāĻļāύ āĻā§ āϏāĻāĻā§āϝāĻž)
application.properties-āĻ āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύ:
backend.url=http://localhost:8081
instance.id=${random.int}
secret="default-secret"āĻŦā§āϝāĻžāĻāĻāύā§āĻĄ āĻ ā§āϝāĻžāĻĄāĻžāĻĒā§āĻāĻžāϰ:
@Service
public class BackendAdapter {
private static final String REQUESTS_ENDPOINT = "/requests";
private final RestTemplate restTemplate;
@Value("${backend.url}")
private String backendUrl;
public BackendAdapter(RestTemplateBuilder builder) {
restTemplate = builder.build();
}
public String getRequests() {
ResponseEntity<String> response = restTemplate.getForEntity(
backendUrl + REQUESTS_ENDPOINT, String.class);
return response.getBody();
}
}āύāĻŋāϝāĻŧāύā§āϤā§āϰāĻ:
@RestController
@RequiredArgsConstructor
public class EndpointController {
private final BackendAdapter backendAdapter;
@Value("${instance.id}")
private int instanceId;
@Value("${secret}")
private String secret;
@GetMapping("/")
public String getRequestsCount() {
return String.format("Number of requests %s (gateway %d, secret %s)", backendAdapter.getRequests(), instanceId, secret);
}
}āĻļā§āϰ⧠āĻāϰāĻž:
āĻāĻŽāϰāĻž āĻŦā§āϝāĻžāĻāĻāύā§āĻĄ āĻļā§āϰ⧠āĻāϰāĻŋ:
./mvnw package -DskipTests
java -Dserver.port=8081 -jar target/microservices-backend-1.0.0.jarāĻā§āĻāĻāϝāĻŧā§ āĻļā§āϰ⧠āĻšāĻā§āĻā§:
./mvnw package -DskipTests
java -jar target/microservices-gateway-1.0.0.jarāĻā§āĻ āĻāϰā§āύ:
$ curl http://localhost:8080/
Number of requests 1 (gateway 38560358, secret "default-secret")āϏāĻŦāĻāĻŋāĻā§ āĻāĻžāĻ āĻāϰāĻā§āĨ¤ āĻāĻāĻāύ āĻŽāύā§āϝā§āĻā§ āĻĒāĻžāĻ āĻ āϞāĻā§āώā§āϝ āĻāϰāĻŦā§āύ āϝ⧠āĻā§āĻāĻāϝāĻŧā§āĻā§ āĻŦāĻžāĻāĻĒāĻžāϏ āĻāϰ⧠āϏāϰāĻžāϏāϰāĻŋ āĻŦā§āϝāĻžāĻāĻāύā§āĻĄ āĻ
ā§āϝāĻžāĻā§āϏā§āϏ āĻāϰāϤ⧠āĻāĻŽāĻžāĻĻā§āϰ āĻŦāĻžāϧāĻž āĻĻā§āϝāĻŧ āύāĻž () āĻāĻāĻŋ āĻ āĻŋāĻ āĻāϰāĻžāϰ āĻāύā§āϝ, āĻĒāϰāĻŋāώā§āĻŦāĻžāĻā§āϞāĻŋāĻā§ āĻ
āĻŦāĻļā§āϝāĻ āĻāĻāĻāĻŋ āύā§āĻāĻāϝāĻŧāĻžāϰā§āĻā§ āĻāĻāϤā§āϰāĻŋāϤ āĻāϰāϤ⧠āĻšāĻŦā§ āĻāĻŦāĻ āĻļā§āϧā§āĻŽāĻžāϤā§āϰ āĻā§āĻāĻāϝāĻŧā§āĻāĻŋ āĻŦāĻžāĻāϰ⧠"āϏā§āĻāĻŋāĻ āĻāĻāĻ" āĻšāĻāϝāĻŧāĻž āĻāĻāĻŋāϤāĨ¤
āĻāĻāĻžāĻĄāĻŧāĻžāĻ, āĻāĻāϝāĻŧ āĻĒāϰāĻŋāώā§āĻŦāĻž āĻāĻāĻāĻŋ āĻĢāĻžāĻāϞ āϏāĻŋāϏā§āĻā§āĻŽ āĻāĻžāĻ āĻāϰā§, āϏā§āĻā§āϰāĻŋāĻŽ āĻāϤā§āĻĒāĻžāĻĻāύ āĻāϰ⧠āĻāĻŦāĻ āĻāĻ āĻŽā§āĻšā§āϰā§āϤ⧠āĻāĻā§ āĻ
āĻĒāϰā§āϰ āϏāĻžāĻĨā§ āĻšāϏā§āϤāĻā§āώā§āĻĒ āĻļā§āϰ⧠āĻāϰāϤ⧠āĻĒāĻžāϰā§āĨ¤ āĻāĻŽāĻžāĻĻā§āϰ āĻŽāĻžāĻāĻā§āϰā§āϏāĻžāϰā§āĻāĻŋāϏāĻā§āϞā§āĻā§ āĻŦāĻŋāĻā§āĻāĻŋāύā§āύ āĻāϰāĻž āĻāĻžāϞ⧠āĻšāĻŦā§āĨ¤ āĻāĻāĻŋ āĻŦāĻŋāĻāĻŋāύā§āύ āĻŽā§āĻļāĻŋāύ⧠āĻ
ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύ āĻŦāĻŋāϤāϰāĻŖ āĻāϰ⧠(āĻ
āύā§āĻ āĻ
āϰā§āĻĨ, āĻāĻ āĻŋāύ), āĻāĻžāϰā§āĻā§āϝāĻŧāĻžāϞ āĻŽā§āĻļāĻŋāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠(āϏāĻŽā§āĻĒāĻĻ āύāĻŋāĻŦāĻŋāĻĄāĻŧ, āĻĻā§āϰā§āĻ āϏā§āĻāĻžāϰā§āĻāĻāĻĒ) āĻŦāĻž āĻāύā§āĻā§āĻāύāĻžāϰāĻžāĻāĻā§āĻļāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻ
āϰā§āĻāύ āĻāϰāĻž āϝā§āϤ⧠āĻĒāĻžāϰā§āĨ¤ āĻĒā§āϰāϤā§āϝāĻžāĻļāĻŋāϤ āĻšāĻŋāϏāĻžāĻŦā§, āĻāĻŽāϰāĻž āϤā§āϤā§āϝāĻŧ āĻŦāĻŋāĻāϞā§āĻĒ āύāĻŋāϰā§āĻŦāĻžāĻāύ āĻāϰā§āύ āĻāĻŦāĻ āϧāĻžāϰāĻāĻāϰāĻŖā§āϰ āĻāύā§āϝ āĻāĻāĻāĻŋ āĻšāĻžāϤāĻŋāϝāĻŧāĻžāϰ āĻšāĻŋāϏāĻžāĻŦā§āĨ¤
āĻĄāĻāĻļā§āϰāĻŽāĻŋāĻ
āϏāĻāĻā§āώā§āĻĒā§, āĻĄāĻāĻžāϰ āĻŦāĻŋāĻā§āĻāĻŋāύā§āύ āĻĒāĻžāϤā§āϰ āϤā§āϰāĻŋ āĻāϰā§, āĻĒā§āϰāϤāĻŋ āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύ⧠āĻāĻāĻāĻŋāĨ¤ āĻĄāĻāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻžāϰ āĻāύā§āϝ, āĻāĻĒāύāĻžāĻā§ āĻāĻāĻāĻŋ āĻĄāĻāĻžāϰāĻĢāĻžāĻāϞ āϞāĻŋāĻāϤ⧠āĻšāĻŦā§ - āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύ āϤā§āϰāĻŋ āĻāĻŦāĻ āĻāĻžāϞāĻžāύā§āϰ āĻāύā§āϝ āύāĻŋāϰā§āĻĻā§āĻļāĻžāĻŦāϞā§āĨ¤ āĻāϰ āĻĒāϰā§, āĻāĻĒāύāĻŋ āĻāĻŦāĻŋāĻāĻŋ āϤā§āϰāĻŋ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ, āĻāĻāĻŋ āĻāĻŽā§āĻ āϰā§āĻāĻŋāϏā§āĻā§āϰāĻŋāϤ⧠āĻāĻĒāϞā§āĻĄ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ (āύāĻāĨ¤ ) āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻāĻŽāĻžāύā§āĻĄā§ āϝā§āĻā§āύ⧠āĻĄāĻāĻžāϰāĻžāĻāĻāĻĄ āĻĒāϰāĻŋāĻŦā§āĻļā§ āĻāĻĒāύāĻžāϰ āĻŽāĻžāĻāĻā§āϰā§āϏāĻžāϰā§āĻāĻŋāϏ āϏā§āĻĨāĻžāĻĒāύ āĻāϰā§āύāĨ¤
Dockerfile
āĻāĻāĻāĻŋ āĻāĻŽā§āĻā§āϰ āĻ āύā§āϝāϤāĻŽ āĻā§āϰā§āϤā§āĻŦāĻĒā§āϰā§āĻŖ āĻŦā§āĻļāĻŋāώā§āĻā§āϝ āĻšāϞ⧠āĻāϰ āĻāĻāĻžāϰāĨ¤ āĻāĻāĻāĻŋ āĻāĻŽā§āĻĒā§āϝāĻžāĻā§āĻ āĻāĻŽā§āĻ āϰāĻŋāĻŽā§āĻ āϰāĻŋāĻĒā§āĻāĻŋāĻāϰāĻŋ āĻĨā§āĻā§ āĻĻā§āϰā§āϤ āĻĄāĻžāĻāύāϞā§āĻĄ āĻšāϝāĻŧ, āĻāĻŽ āĻāĻžāϝāĻŧāĻāĻž āύā§āϝāĻŧ āĻāĻŦāĻ āĻāĻĒāύāĻžāϰ āϏāĻžāϰā§āĻāĻŋāϏāĻ āĻĻā§āϰā§āϤ āĻāĻžāϞ⧠āĻšāϝāĻŧāĨ¤ āϝā§āĻā§āύ⧠āĻāĻŽā§āĻ āĻāĻāĻāĻŋ āĻŦā§āϏ āĻāĻŽā§āĻā§āϰ āĻāĻĒāϰ āĻāĻŋāϤā§āϤāĻŋ āĻāϰ⧠āϤā§āϰāĻŋ āĻšāϝāĻŧ, āĻāĻŦāĻ āϏāĻŦāĻā§āϝāĻŧā§ āϏāĻāĻā§āώāĻŋāĻĒā§āϤ āĻŦāĻŋāĻāϞā§āĻĒāĻāĻŋ āĻŦā§āĻā§ āύā§āĻāϝāĻŧāĻžāϰ āĻĒāϰāĻžāĻŽāϰā§āĻļ āĻĻā§āĻāϝāĻŧāĻž āĻšāϝāĻŧāĨ¤ āĻāĻāĻāĻŋ āĻāĻžāϞ⧠āĻŦāĻŋāĻāϞā§āĻĒ āĻšāϞ⧠āĻāϞāĻĒāĻžāĻāύ, āϝāĻž āĻāĻāĻāĻŋ āĻĒā§āϰā§āĻŖāĻžāĻā§āĻ āĻĢāĻŋāĻāĻžāϰāϝā§āĻā§āϤ āĻĄāĻŋāϏā§āĻā§āϰāĻŋāĻŦāĻŋāĻāĻļāύāĨ¤ Linux āύā§āϝā§āύāϤāĻŽ āϏāĻāĻā§āϝāĻ āĻĒā§āϝāĻžāĻā§āĻ āϏāĻšāĨ¤
āĻļā§āϰ⧠āĻāϰāĻžāϰ āĻāύā§āϝ, āĻāϏā§āύ āĻāĻāĻāĻŋ āĻĄāĻāĻžāϰāĻĢāĻžāĻāϞ "āĻāĻĒāĻžāϞā§" āϞā§āĻāĻžāϰ āĻā§āώā§āĻāĻž āĻāϰāĻŋ (āĻāĻŽāĻŋ āĻāĻāύāĻ āĻŦāϞāĻŦ āϝ⧠āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻāĻžāϰāĻžāĻĒ āĻāĻĒāĻžāϝāĻŧ, āĻāĻāĻŋ āĻāϰāĻŦā§āύ āύāĻž):
FROM adoptopenjdk/openjdk11:jdk-11.0.5_10-alpine
ADD . /src
WORKDIR /src
RUN ./mvnw package -DskipTests
EXPOSE 8080
ENTRYPOINT ["java","-jar","target/microservices-gateway-1.0.0.jar"]āĻāĻāĻžāύ⧠āĻāĻŽāϰāĻž āĻāĻŽāĻžāĻĻā§āϰ āĻĒā§āϰāĻāϞā§āĻĒ āϤā§āϰāĻŋ āĻāϰāϤ⧠āĻāϤāĻŋāĻŽāϧā§āϝ⧠āĻāύāϏā§āĻāϞ āĻāϰāĻž JDK āϏāĻš āĻāĻāĻāĻŋ āĻāϞāĻĒāĻžāĻāύ āĻāĻŋāϤā§āϤāĻŋāĻ āĻŦā§āϏ āĻāĻŽā§āĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻāĻŋāĨ¤ ADD āĻāĻŽāĻžāύā§āĻĄā§āϰ āϏāĻžāĻšāĻžāϝā§āϝā§, āĻāĻŽāϰāĻž āĻāĻŋāϤā§āϰāĻāĻŋāϤ⧠āĻŦāϰā§āϤāĻŽāĻžāύ src āĻĄāĻŋāϰā§āĻā§āĻāϰāĻŋ āϝā§āĻ āĻāϰāĻŋ, āĻāĻāĻŋāĻā§ āĻāĻžāĻ (āĻāϝāĻŧāĻžāϰā§āĻāĻĄāĻŋāϰ) āĻšāĻŋāϏāĻžāĻŦā§ āĻāĻŋāĻšā§āύāĻŋāϤ āĻāϰāĻŋ āĻāĻŦāĻ āĻŦāĻŋāϞā§āĻĄ āĻļā§āϰ⧠āĻāϰāĻŋāĨ¤ EXPOSE 8080 āĻāĻŽāĻžāύā§āĻĄ āĻĄāĻāĻžāϰāĻā§ āϏāĻāĻā§āϤ āĻĻā§āϝāĻŧ āϝ⧠āĻāύā§āĻā§āĻāύāĻžāϰ⧠āĻĨāĻžāĻāĻž āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύāĻāĻŋ āϤāĻžāϰ āĻĒā§āϰā§āĻ 8080 āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻŦā§ (āĻāĻāĻŋ āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύāĻāĻŋāĻā§ āĻŦāĻžāĻāϰ⧠āĻĨā§āĻā§ āĻ ā§āϝāĻžāĻā§āϏā§āϏāϝā§āĻā§āϝ āĻāϰ⧠āϤā§āϞāĻŦā§ āύāĻž, āϤāĻŦā§ āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύāĻāĻŋāĻā§ āĻ ā§āϝāĻžāĻā§āϏā§āϏ āĻāϰāĻžāϰ āĻ āύā§āĻŽāϤāĻŋ āĻĻā§āĻŦā§, āĻāĻĻāĻžāĻšāϰāĻŖāϏā§āĻŦāϰā§āĻĒ, āĻāĻāĻ āĻĄāĻāĻžāϰ āύā§āĻāĻāϝāĻŧāĻžāϰā§āĻā§āϰ āĻ āύā§āϝ āĻāύā§āĻā§āĻāύāĻžāϰ āĻĨā§āĻā§ )
āĻāĻŽā§āĻāĻā§āϞāĻŋāϤ⧠āĻĒāϰāĻŋāώā§āĻŦāĻžāĻā§āϞāĻŋ āĻĒā§āϝāĻžāĻā§āĻ āĻāϰāϤā§, āĻāĻĒāύāĻžāĻā§ āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻĒā§āϰāĻāϞā§āĻĒā§āϰ āϰā§āĻ āĻĨā§āĻā§ āĻāĻŽāĻžāύā§āĻĄ āĻāĻžāϞāĻžāϤ⧠āĻšāĻŦā§:
docker image build . -t msvc-backend:1.0.0āĻĢāϞāĻžāĻĢāϞ āĻšāϞ āĻāĻāĻāĻŋ 456 MB āĻāĻŋāϤā§āϰ (āϝāĻžāϰ āĻāĻŋāϤā§āϤāĻŋ JDK āĻāĻŋāϤā§āϰāĻāĻŋ 340 MB āĻĻāĻāϞ āĻāϰā§āĻā§)⧎ āĻāĻŦāĻ āϏāĻŦ āϏāϤā§āϤā§āĻŦā§āĻ āϝ⧠āĻāĻŽāĻžāĻĻā§āϰ āĻĒā§āϰāĻāϞā§āĻĒā§āϰ āĻā§āϞāĻžāϏ āĻāĻāĻāĻŋ āĻāĻā§āϞā§āϰ āĻāĻĒāϰ āĻāĻŖāύāĻž āĻāϰāĻž āϝā§āϤ⧠āĻĒāĻžāϰā§. āĻāĻŽāĻžāĻĻā§āϰ āĻāĻŦāĻŋāϰ āĻāĻāĻžāϰ āĻāĻŽāĻžāϤā§:
- āĻāĻŽāϰāĻž āĻŦāĻšā§-āĻĒāĻĻāĻā§āώā§āĻĒ āϏāĻŽāĻžāĻŦā§āĻļ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻŋāĨ¤ āĻĒā§āϰāĻĨāĻŽ āϧāĻžāĻĒā§ āĻāĻŽāϰāĻž āĻĒā§āϰāĻāϞā§āĻĒāĻāĻŋ āϤā§āϰāĻŋ āĻāϰāĻŦ, āĻĻā§āĻŦāĻŋāϤā§āϝāĻŧ āϧāĻžāĻĒā§ āĻāĻŽāϰāĻž JRE āĻāύāϏā§āĻāϞ āĻāϰāĻŦ āĻāĻŦāĻ āϤā§āϤā§āϝāĻŧ āϧāĻžāĻĒā§ āĻāĻŽāϰāĻž āĻāĻāĻŋāĻā§ āĻāĻāĻāĻŋ āύāϤā§āύ āĻĒāϰāĻŋāώā§āĻāĻžāϰ āĻāϞāĻĒāĻžāĻāύ āĻāĻŦāĻŋāϤ⧠āĻāĻĒāĻŋ āĻāϰāĻŦāĨ¤ āĻŽā§āĻ, āĻļā§āϧā§āĻŽāĻžāϤā§āϰ āĻĒā§āϰāϝāĻŧā§āĻāύā§āϝāĻŧ āĻāĻĒāĻžāĻĻāĻžāύāĻā§āϞāĻŋ āĻā§āĻĄāĻŧāĻžāύā§āϤ āĻāĻŋāϤā§āϰ⧠āĻĨāĻžāĻāĻŦā§āĨ¤
- āĻāĻžāĻāĻž āĻŽāĻĄā§āϞāĻžāϰāĻžāĻāĻā§āĻļāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āϝāĻžāĻāĨ¤ Java 9 āĻĻāĻŋāϝāĻŧā§ āĻļā§āϰ⧠āĻāϰā§, āĻāĻĒāύāĻŋ āĻāĻĒāύāĻžāϰ āĻĒā§āϰāϝāĻŧā§āĻāύā§āϝāĻŧ āĻŽāĻĄāĻŋāĻāϞāĻā§āϞāĻŋ āĻĨā§āĻā§ āĻāĻāĻāĻŋ JRE āϤā§āϰāĻŋ āĻāϰāϤ⧠jlink āĻā§āϞ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ
āĻ āύā§āϏāύā§āϧāĻŋā§āϏā§āĻĻā§āϰ āĻāύā§āϝ, āĻāĻāĻžāύ⧠āĻāĻŋāϤā§āϰ āĻšā§āϰāĻžāϏ āĻĒāĻĻā§āϧāϤāĻŋāϰ āĻāĻĒāϰ āĻāĻāĻāĻŋ āĻāĻžāϞ āύāĻŋāĻŦāύā§āϧ āϰāϝāĻŧā§āĻā§āĨ¤ .
āĻā§āĻĄāĻŧāĻžāύā§āϤ āĻĄāĻāĻžāϰāĻĢāĻžāĻāϞ:
FROM adoptopenjdk/openjdk11:jdk-11.0.5_10-alpine as builder
ADD . /src
WORKDIR /src
RUN ./mvnw package -DskipTests
FROM alpine:3.10.3 as packager
RUN apk --no-cache add openjdk11-jdk openjdk11-jmods
ENV JAVA_MINIMAL="/opt/java-minimal"
RUN /usr/lib/jvm/java-11-openjdk/bin/jlink
--verbose
--add-modules
java.base,java.sql,java.naming,java.desktop,java.management,java.security.jgss,java.instrument
--compress 2 --strip-debug --no-header-files --no-man-pages
--release-info="add:IMPLEMENTOR=radistao:IMPLEMENTOR_VERSION=radistao_JRE"
--output "$JAVA_MINIMAL"
FROM alpine:3.10.3
LABEL maintainer="Anton Shelenkov anshelen@yandex.ru"
ENV JAVA_HOME=/opt/java-minimal
ENV PATH="$PATH:$JAVA_HOME/bin"
COPY --from=packager "$JAVA_HOME" "$JAVA_HOME"
COPY --from=builder /src/target/microservices-backend-*.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","/app.jar"]āĻāĻŽāϰāĻž āĻāĻŋāϤā§āϰāĻāĻŋ āĻĒā§āύāϰāĻžāϝāĻŧ āϤā§āϰāĻŋ āĻāϰāĻŋ, āĻāĻŦāĻ āĻĢāϞāϏā§āĻŦāϰā§āĻĒ, āĻāĻāĻŋ 6 āĻāĻŽāĻŦāĻŋ āĻĒāϰāĻŋāĻŽāĻžāĻŖā§ 77 āĻā§āĻŖ āĻāĻāύ āĻšāĻžāϰāĻŋāϝāĻŧā§āĻā§āĨ¤ āĻāĻžāϰāĻžāĻĒ āύāĻž. āĻāϰ āĻĒāϰā§, āϰā§āĻĄāĻŋāĻŽā§āĻĄ āĻāĻŦāĻŋāĻā§āϞāĻŋ āĻāĻŽā§āĻ āϰā§āĻāĻŋāϏā§āĻā§āϰāĻŋāϤ⧠āĻāĻĒāϞā§āĻĄ āĻāϰāĻž āϝā§āϤ⧠āĻĒāĻžāϰ⧠āϝāĻžāϤ⧠āĻāĻĒāύāĻžāϰ āĻāĻŦāĻŋāĻā§āϞāĻŋ āĻāύā§āĻāĻžāϰāύā§āĻ āĻĨā§āĻā§ āĻĄāĻžāĻāύāϞā§āĻĄā§āϰ āĻāύā§āϝ āĻāĻĒāϞāĻŦā§āϧ āĻĨāĻžāĻā§āĨ¤
āĻĄāĻāĻžāϰ⧠āϏāĻš-āĻāϞāĻŽāĻžāύ āĻĒāϰāĻŋāώā§āĻŦāĻž
āĻļā§āϰā§āϤā§, āĻāĻŽāĻžāĻĻā§āϰ āĻĒāϰāĻŋāώā§āĻŦāĻžāĻā§āϞāĻŋ āĻāĻāĻ āύā§āĻāĻāϝāĻŧāĻžāϰā§āĻā§ āĻĨāĻžāĻāĻž āĻāĻŦāĻļā§āϝāĻ⧎ āĻĄāĻāĻžāϰ⧠āĻŦāĻŋāĻāĻŋāύā§āύ āϧāϰāĻŖā§āϰ āύā§āĻāĻāϝāĻŧāĻžāϰā§āĻ āϰāϝāĻŧā§āĻā§ āĻāĻŦāĻ āĻāĻŽāϰāĻž āϤāĻžāĻĻā§āϰ āĻŽāϧā§āϝ⧠āϏāĻŦāĻā§āϝāĻŧā§ āĻāĻĻāĻŋāĻŽ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻŋ - āĻŦā§āϰāĻŋāĻ, āϝāĻž āĻāĻĒāύāĻžāĻā§ āĻāĻāĻ āĻšā§āϏā§āĻā§ āĻāϞāĻŽāĻžāύ āĻāύā§āĻā§āĻāύāĻžāϰāĻā§āϞāĻŋāĻā§ āύā§āĻāĻāϝāĻŧāĻžāϰā§āĻ āĻāϰāϤ⧠āĻĻā§āϝāĻŧāĨ¤ āύāĻŋāĻŽā§āύāϞāĻŋāĻāĻŋāϤ āĻāĻŽāĻžāύā§āĻĄ āĻĻāĻŋāϝāĻŧā§ āĻāĻāĻāĻŋ āύā§āĻāĻāϝāĻŧāĻžāϰā§āĻ āϤā§āϰāĻŋ āĻāϰā§āύ:
docker network create msvc-networkāĻāϰ āĻĒāϰā§, āĻŽāĻžāĻāĻā§āϰā§āϏāĻžāϰā§āĻāĻŋāϏā§āϏ-āĻŦā§āϝāĻžāĻā§āύā§āĻĄ:1.0.0 āĻāĻŋāϤā§āϰā§āϰ āϏāĻžāĻĨā§ 'āĻŦā§āϝāĻžāĻā§āύā§āĻĄ' āύāĻžāĻŽā§āϰ āĻŦā§āϝāĻžāĻāĻāύā§āĻĄ āĻāύā§āĻā§āĻāύāĻžāϰāĻāĻŋ āĻļā§āϰ⧠āĻāϰā§āύ:
docker run -dit --name backend --network msvc-net microservices-backend:1.0.0āĻāĻāĻž āϞāĻā§āώāĻŖā§āϝāĻŧ āϝ⧠āĻŦā§āϰāĻŋāĻ āύā§āĻāĻāϝāĻŧāĻžāϰā§āĻ āĻāύā§āĻā§āĻāύāĻžāϰāĻā§āϞāĻŋāϰ āĻāύā§āϝ āϤāĻžāĻĻā§āϰ āύāĻžāĻŽ āĻ āύā§āϏāĻžāϰ⧠āĻŦāĻā§āϏ āĻĒāϰāĻŋāώā§āĻŦāĻž āĻāĻŦāĻŋāώā§āĻāĻžāϰā§āϰ āĻŦāĻžāĻāϰ⧠āϏāϰāĻŦāϰāĻžāĻš āĻāϰā§āĨ¤ āĻ āϰā§āĻĨāĻžā§, āĻŦā§āϝāĻžāĻāĻāύā§āĻĄ āĻĒāϰāĻŋāώā§āĻŦāĻžāĻāĻŋ āĻĄāĻāĻžāϰ āύā§āĻāĻāϝāĻŧāĻžāϰā§āĻā§āϰ āĻāĻŋāϤāϰ⧠āĻĒāĻžāĻāϝāĻŧāĻž āϝāĻžāĻŦā§ .
āĻā§āĻāĻāϝāĻŧā§ āĻļā§āϰ⧠āĻšāĻā§āĻā§:
docker run -dit -p 80:8080 --env secret=my-real-secret --env BACKEND_URL=http://backend:8080/ --name gateway --network msvc-net microservices-gateway:1.0.0āĻāĻ āĻāĻŽāĻžāύā§āĻĄā§, āĻāĻŽāϰāĻž āĻāĻā§āĻāĻŋāϤ āĻāϰāĻŋ āϝ⧠āĻāĻŽāϰāĻž āĻāĻŽāĻžāĻĻā§āϰ āĻšā§āϏā§āĻā§āϰ āĻĒā§āϰā§āĻ 80 āĻā§ āĻāύā§āĻā§āĻāύāĻžāϰā§āϰ āĻĒā§āϰā§āĻ 8080 āĻ āĻĢāϰā§āϝāĻŧāĻžāϰā§āĻĄ āĻāϰāĻāĻŋāĨ¤ āĻāĻŽāϰāĻž āĻĒāϰāĻŋāĻŦā§āĻļā§āϰ āĻā§āϰāĻŋāϝāĻŧā§āĻŦāϞ āϏā§āĻ āĻāϰāϤ⧠env āĻŦāĻŋāĻāϞā§āĻĒāĻā§āϞāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻŋ āϝāĻž āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧāĻāĻžāĻŦā§ āĻŦāϏāύā§āϤ āĻĻā§āĻŦāĻžāϰāĻž āĻĒāĻĄāĻŧāĻž āĻšāĻŦā§ āĻāĻŦāĻ application.properties āĻĨā§āĻā§ āĻŦā§āĻļāĻŋāώā§āĻā§āϝāĻā§āϞāĻŋāĻā§ āĻāĻāĻžāϰāϰāĻžāĻāĻĄ āĻāϰāĻŦā§ā§ˇ
āĻļā§āϰ⧠āĻāϰāĻžāϰ āĻĒāϰā§, āĻāĻŽāϰāĻž āĻāϞ āĻāĻŦāĻ āύāĻŋāĻļā§āĻāĻŋāϤ āĻāϰā§āύ āϝ⧠āϏāĻŦāĻāĻŋāĻā§ āĻāĻžāĻ āĻāϰā§, āĻāĻā§āϰ āĻā§āώā§āϤā§āϰ⧠āĻšāĻŋāϏāĻžāĻŦā§āĨ¤
āĻāĻĒāϏāĻāĻšāĻžāϰ
āĻĢāϞāϏā§āĻŦāϰā§āĻĒ, āĻāĻŽāϰāĻž āĻĻā§āĻāĻŋ āϏāĻžāϧāĻžāϰāĻŖ āĻŽāĻžāĻāĻā§āϰā§āϏāĻžāϰā§āĻāĻŋāϏ āϤā§āϰāĻŋ āĻāϰā§āĻāĻŋ, āϏā§āĻā§āϞāĻŋāĻā§ āĻĄāĻāĻžāϰ āĻĒāĻžāϤā§āϰ⧠āĻĒā§āϝāĻžāĻā§āĻ āĻāϰā§āĻāĻŋ āĻāĻŦāĻ āĻāĻāĻ āĻŽā§āĻļāĻŋāύ⧠āĻāĻāϏāĻžāĻĨā§ āĻāĻžāϞ⧠āĻāϰā§āĻāĻŋāĨ¤ āĻĢāϞāϏā§āĻŦāϰā§āĻĒ āϏāĻŋāϏā§āĻā§āĻŽā§āϰ āĻ āĻŦāĻļā§āϝ āĻŦā§āĻļ āĻāĻŋāĻā§ āĻ āϏā§āĻŦāĻŋāϧāĻž āϰāϝāĻŧā§āĻā§:
- āĻĻā§āϰā§āĻŦāϞ āĻĻā§āώ āϏāĻšāύāĻļā§āϞāϤāĻž - āϏāĻŦāĻāĻŋāĻā§ āĻāĻŽāĻžāĻĻā§āϰ āĻāύā§āϝ āĻāĻāĻāĻŋ āϏāĻžāϰā§āĻāĻžāϰ⧠āĻāĻžāĻ āĻāϰā§
- āĻĻā§āϰā§āĻŦāϞ āĻŽāĻžāĻĒāϝā§āĻā§āϝāϤāĻž - āϝāĻāύ āϞā§āĻĄ āĻŦā§āĻĻā§āϧāĻŋ āĻĒāĻžāϝāĻŧ, āϤāĻāύ āĻ āϤāĻŋāϰāĻŋāĻā§āϤ āĻĒāϰāĻŋāώā§āĻŦāĻž āĻĻā§āώā§āĻāĻžāύā§āϤāĻā§āϞāĻŋ āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧāĻāĻžāĻŦā§ āϏā§āĻĨāĻžāĻĒāύ āĻāϰāĻž āĻāĻŦāĻ āϤāĻžāĻĻā§āϰ āĻŽāϧā§āϝ⧠āϞā§āĻĄā§āϰ āĻāĻžāϰāϏāĻžāĻŽā§āϝ āĻŦāĻāĻžāϝāĻŧ āϰāĻžāĻāĻž āĻāĻžāϞ āĻšāĻŦā§
- āϞāĻā§āĻā§āϰ āĻāĻāĻŋāϞāϤāĻž - āĻāĻŽāĻžāĻĻā§āϰ āĻāĻŽāĻĒāĻā§āώ⧠3āĻāĻŋ āĻāĻŽāĻžāύā§āĻĄ āĻĒā§āϰāĻŦā§āĻļ āĻāϰāϤ⧠āĻšāĻŦā§ āĻāĻŦāĻ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻĒāϰāĻžāĻŽāĻŋāϤāĻŋ āϏāĻš (āĻāĻāĻŋ āĻļā§āϧā§āĻŽāĻžāϤā§āϰ 2āĻāĻŋ āĻĒāϰāĻŋāώā§āĻŦāĻžāϰ āĻāύā§āϝ)
āĻāĻĒāϰā§āϰ āϏāĻŽāϏā§āϝāĻžāĻā§āϞāĻŋ āϏāĻŽāĻžāϧāĻžāύ āĻāϰāĻžāϰ āĻāύā§āϝ, āĻĄāĻāĻžāϰ āϏā§āϝāĻŧāĻžāϰā§āĻŽ, āύā§āĻŽā§āϝāĻžāĻĄ, āĻā§āĻŦāĻžāϰāύā§āĻāϏ āĻŦāĻž āĻāĻĒā§āύāĻļāĻŋāĻĢāĻā§āϰ āĻŽāϤ⧠āĻŦā§āĻļ āĻāϝāĻŧā§āĻāĻāĻŋ āϏāĻŽāĻžāϧāĻžāύ āϰāϝāĻŧā§āĻā§āĨ¤ āϝāĻĻāĻŋ āĻĒā§āϰ⧠āϏāĻŋāϏā§āĻā§āĻŽāĻāĻŋ āĻāĻžāĻāĻžāϤ⧠āϞā§āĻāĻž āĻĨāĻžāĻā§, āĻāĻĒāύāĻŋ āϏā§āĻĒā§āϰāĻŋāĻ āĻā§āϞāĻžāĻāĻĄā§āϰ āĻĻāĻŋāĻā§ āϤāĻžāĻāĻžāϤ⧠āĻĒāĻžāϰā§āύ ().
Đ āĻāĻŽāĻŋ āĻāĻŋāĻāĻžāĻŦā§ Kubernetes āϏā§āĻ āĻāĻĒ āĻāϰā§āĻāĻŋ āĻāĻŦāĻ Google Kubernetes āĻāĻā§āĻāĻŋāύ⧠āĻĒā§āϰāĻāϞā§āĻĒāĻāĻŋ āϏā§āĻĨāĻžāĻĒāύ āĻāϰā§āĻāĻŋ āϏ⧠āϏāĻŽā§āĻĒāϰā§āĻā§ āĻāĻŽāĻŋ āĻāĻĨāĻž āĻŦāϞāĻŦāĨ¤
āĻāϤā§āϏ: www.habr.com
