āĻāĻ°ā§ āĻšāĻžāĻŦāĻ°āĨ¤
āĻāĻ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§, āĻāĻŽāĻŋ āĻŽāĻžāĻāĻā§āĻ°ā§āĻ¸āĻžāĻ°ā§āĻāĻŋāĻ¸ā§ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻļā§āĻāĻžāĻ° āĻĒāĻ°āĻŋāĻŦā§āĻļ āĻ¤ā§āĻ°āĻŋāĻ¤ā§ āĻāĻŽāĻžāĻ° āĻ āĻāĻŋāĻā§āĻāĻ¤āĻž āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻāĻĨāĻž āĻŦāĻ˛āĻ¤ā§ āĻāĻžāĻāĨ¤ āĻ¯āĻāĻ¨ āĻāĻŽāĻŋ āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻā§āĻ˛ āĻļāĻŋāĻā§āĻāĻŋ, āĻāĻŽāĻŋ āĻ¸āĻŦāĻ¸āĻŽāĻ¯āĻŧ āĻāĻāĻŋ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻ¸ā§āĻĨāĻžāĻ¨ā§āĻ¯āĻŧ āĻŽā§āĻļāĻŋāĻ¨ā§ āĻ¨āĻ¯āĻŧ, āĻāĻ°āĻ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻ¸āĻŽā§āĻŽāĻ¤ āĻĒāĻ°āĻŋāĻ¸ā§āĻĨāĻŋāĻ¤āĻŋāĻ¤ā§āĻ āĻā§āĻˇā§āĻāĻž āĻāĻ°āĻ¤ā§ āĻā§āĻ¯āĻŧā§āĻāĻŋāĻ˛āĻžāĻŽāĨ¤ āĻ āĻ¤āĻāĻŦ, āĻāĻŽāĻŋ āĻāĻāĻāĻŋ āĻ¸āĻ°āĻ˛ā§āĻā§āĻ¤ āĻŽāĻžāĻāĻā§āĻ°ā§āĻ¸āĻžāĻ°ā§āĻāĻŋāĻ¸ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻžāĻ° āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨āĻŋāĻ¯āĻŧā§āĻāĻŋ, āĻ¯āĻž āĻĒāĻ°ā§ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ§āĻ°āĻŖā§āĻ° āĻāĻāĻ°ā§āĻˇāĻŖā§āĻ¯āĻŧ āĻĒā§āĻ°āĻ¯ā§āĻā§āĻ¤āĻŋāĻ° āĻ¸āĻžāĻĨā§ "āĻāĻā§āĻāĻ¨ā§āĻ¨" āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒā§āĻ° āĻāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧāĻ¤āĻž āĻšāĻ˛ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽā§āĻ° āĻ¸āĻ°ā§āĻŦāĻžāĻ§āĻŋāĻ āĻāĻžāĻ°ā§āĻ¯āĻāĻ°ā§ āĻ¨ā§āĻāĻā§āĻ¯āĨ¤
āĻĒā§āĻ°āĻžāĻĨāĻŽāĻŋāĻāĻāĻžāĻŦā§, āĻāĻŽāĻŋ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒā§āĻ° āĻ¨āĻŋāĻ°ā§āĻŽāĻžāĻŖāĻā§ āĻāĻ¯āĻŧā§āĻāĻāĻŋ āĻ§āĻžāĻĒā§ āĻā§āĻā§ āĻĻāĻŋāĻ¯āĻŧā§āĻāĻŋ:
-
āĻĻā§āĻāĻŋ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻž āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§āĻ¨ - 'āĻŦā§āĻ¯āĻžāĻā§āĻ¨ā§āĻĄ' (āĻŦā§āĻ¯āĻžāĻāĻāĻ¨ā§āĻĄ) āĻāĻŦāĻ 'āĻā§āĻāĻāĻ¯āĻŧā§' (āĻā§āĻāĻāĻ¯āĻŧā§), āĻ¸ā§āĻā§āĻ˛āĻŋāĻā§ āĻĄāĻāĻžāĻ° āĻāĻŽā§āĻā§ āĻĒā§āĻ¯āĻžāĻ āĻāĻ°ā§āĻ¨ āĻāĻŦāĻ āĻāĻāĻ¸āĻžāĻĨā§ āĻāĻžāĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ¸ā§āĻ āĻāĻĒ āĻāĻ°ā§āĻ¨
āĻā§āĻāĻ¯āĻŧāĻžāĻ°ā§āĻĄ: āĻāĻžāĻāĻž 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
āĻāĻāĻāĻŋ āĻāĻŋāĻ¤ā§āĻ°ā§āĻ° āĻ¸āĻŦāĻā§āĻ¯āĻŧā§ āĻā§āĻ°ā§āĻ¤ā§āĻŦāĻĒā§āĻ°ā§āĻŖ āĻŦā§āĻļāĻŋāĻˇā§āĻā§āĻ¯āĻā§āĻ˛āĻŋāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻāĻāĻāĻŋ āĻšāĻ˛ āĻāĻ° āĻāĻāĻžāĻ°āĨ¤ āĻāĻāĻāĻŋ āĻāĻŽāĻĒā§āĻ¯āĻžāĻā§āĻ āĻāĻŋāĻ¤ā§āĻ° āĻāĻāĻāĻŋ āĻĻā§āĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻ¸āĻāĻā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛ āĻĨā§āĻā§ āĻĻā§āĻ°ā§āĻ¤ āĻĄāĻžāĻāĻ¨āĻ˛ā§āĻĄ āĻšāĻŦā§, āĻāĻŽ āĻāĻžāĻ¯āĻŧāĻāĻž āĻ¨ā§āĻŦā§ āĻāĻŦāĻ āĻāĻĒāĻ¨āĻžāĻ° āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻž āĻĻā§āĻ°ā§āĻ¤ āĻļā§āĻ°ā§ āĻšāĻŦā§āĨ¤ āĻ¯ā§ āĻā§āĻ¨āĻ āĻāĻŋāĻ¤ā§āĻ° āĻŦā§āĻ¸ āĻāĻŽā§āĻā§āĻ° āĻāĻŋāĻ¤ā§āĻ¤āĻŋāĻ¤ā§ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻāĻŦāĻ āĻāĻāĻŋ āĻ¸āĻŦāĻā§āĻ¯āĻŧā§ āĻ¸āĻāĻā§āĻˇāĻŋāĻĒā§āĻ¤ āĻŦāĻŋāĻāĻ˛ā§āĻĒāĻāĻŋ āĻŦā§āĻā§ āĻ¨ā§āĻāĻ¯āĻŧāĻžāĻ° āĻĒāĻ°āĻžāĻŽāĻ°ā§āĻļ āĻĻā§āĻāĻ¯āĻŧāĻž āĻšāĻ¯āĻŧāĨ¤ āĻāĻāĻāĻŋ āĻāĻžāĻ˛ āĻŦāĻŋāĻāĻ˛ā§āĻĒ āĻšāĻ˛ āĻāĻ˛āĻĒāĻžāĻāĻ¨, āĻ¨ā§āĻ¯ā§āĻ¨āĻ¤āĻŽ āĻĒā§āĻ¯āĻžāĻā§āĻ āĻ¸āĻš āĻāĻāĻāĻŋ āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖ āĻ˛āĻŋāĻ¨āĻžāĻā§āĻ¸ āĻŦāĻŋāĻ¤āĻ°āĻŖāĨ¤
āĻļā§āĻ°ā§ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻāĻ¸ā§āĻ¨ āĻāĻāĻāĻŋ āĻĄāĻāĻžāĻ°āĻĢāĻžāĻāĻ˛ "āĻāĻĒāĻžāĻ˛ā§" āĻ˛ā§āĻāĻžāĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°āĻŋ (āĻāĻŽāĻŋ āĻāĻāĻ¨āĻ āĻŦāĻ˛āĻŦ āĻ¯ā§ āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻāĻžāĻ°āĻžāĻĒ āĻāĻĒāĻžāĻ¯āĻŧ, āĻāĻāĻŋ āĻāĻ°āĻŦā§āĻ¨ āĻ¨āĻž):
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 [email protected]"
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āĻāĻŋ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻžāĻ° āĻāĻ¨ā§āĻ¯)
āĻāĻĒāĻ°ā§āĻ° āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻā§āĻ˛āĻŋ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻĄāĻāĻžāĻ° āĻ¸ā§āĻ¯āĻŧāĻžāĻ°ā§āĻŽ, āĻ¨ā§āĻŽā§āĻ¯āĻžāĻĄ, āĻā§āĻŦāĻžāĻ°āĻ¨ā§āĻāĻ¸ āĻŦāĻž āĻāĻĒā§āĻ¨āĻļāĻŋāĻĢāĻā§āĻ° āĻŽāĻ¤ā§ āĻŦā§āĻļ āĻāĻ¯āĻŧā§āĻāĻāĻŋ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻ°āĻ¯āĻŧā§āĻā§āĨ¤ āĻ¯āĻĻāĻŋ āĻĒā§āĻ°ā§ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽāĻāĻŋ āĻāĻžāĻāĻžāĻ¤ā§ āĻ˛ā§āĻāĻž āĻĨāĻžāĻā§, āĻāĻĒāĻ¨āĻŋ āĻ¸ā§āĻĒā§āĻ°āĻŋāĻ āĻā§āĻ˛āĻžāĻāĻĄā§āĻ° āĻĻāĻŋāĻā§ āĻ¤āĻžāĻāĻžāĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ (
Đ
āĻāĻ¤ā§āĻ¸: www.habr.com