рдЬрд╛рд╡рд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЫрд╡рд┐ рдЕрдиреБрдХреВрд▓рди рдХреА рдХрд╣рд╛рдиреА рд╡рд╕рдВрдд рдмреНрд▓реЙрдЧ рд▓реЗрдЦ рдПрдХ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реБрдИред рдЗрд╕рдореЗрдВ рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рдбреЙрдХрдЯрд░ рдЗрдореЗрдЬ рдмрдирд╛рдиреЗ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдкрд╣рд▓реБрдУрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ, рдЬрд┐рд╕рдореЗрдВ рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдореБрджреНрджрд╛ рднреА рд╢рд╛рдорд┐рд▓ рд╣реИред рд╣рдорд╛рд░реА рдЯреАрдореЛрдВ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдХрдИ рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдерд╛, рдЗрд╕рд▓рд┐рдП рд╣рдордиреЗ рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХреЛ рд╣рдорд╛рд░реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдкрд░ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред
рдЬреИрд╕рд╛ рдХрд┐ рдЕрдХреНрд╕рд░ рд╣реЛрддрд╛ рд╣реИ, рд╕рдм рдХреБрдЫ рдкрд╣рд▓реА рдмрд╛рд░ рдирд╣реАрдВ рд╣реБрдЖ, рдорд▓реНрдЯреА-рдореЙрдбреНрдпреВрд▓ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдмрд╛рд░реАрдХрд┐рдпрд╛рдВ рдереАрдВ рдФрд░ рд╕реАрдЖрдИ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдпрд╣ рд╕рдм рдбреНрд░рд╛рдЗрд╡ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдЖрдк рдЗрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдкрд╛рдПрдВрдЧреЗред
рдЕрдиреБрдХреВрд▓рди рдХрд╛ рд▓рдХреНрд╖реНрдп рдЕрд╕реЗрдВрдмрд▓реА рд╕реЗ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рддрдХ рдкрд░рд┐рдгрд╛рдореА рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХреЛ рдХрдо рдХрд░рдирд╛ рд╣реИ, рдЬреЛ рдирд┐рд░рдВрддрд░ рд╡рд┐рддрд░рдг рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдПрдХ рдЕрдЪреНрдЫрд╛ рдкрд░рд┐рдгрд╛рдо рджреЗрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдк рдЫрд╡рд┐ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдХрдо рд╕реЗ рдХрдо рдХрд░рдиреЗ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╣рдм рдкрд░ рдЕрдиреНрдп рд▓реЗрдЦреЛрдВ рдХрд╛ рд╕рдВрджрд░реНрдн рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ
рдпрджрд┐ рдЖрдкрдХреЛ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рдХрд░рдирд╛ рд╣реИ рдХрд┐ рдЫрд╡рд┐ рдореЗрдВ рд░рдЦрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдорд▓реНрдЯреА-рдореАрдЯрд░ рдмреВрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рд╛рде рдХреБрдЫ рдХреНрдпреЛрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рддреЛ рдЖрдк рддреБрд░рдВрдд рдЕрдиреБрдХреВрд▓рди рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╡рд┐рд╡рд░рдг рдкрд░ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рд╡рд╕рдВрдд рдмреНрд▓реЙрдЧ рд╕реЗ рд▓реЗрдЦ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣реЗ, рддреЛ рдЖрдк рдкрд╛рдИ рдЧрдИ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред
рдХреНрдпреЛрдВ рдпрд╣ рд╕рдм рд╣реИ, рдпрд╛ рд╡рд╕рд╛ рдЬрд╛рд░ рдХреЗ рдлреНрд▓рд┐рдк рдкрдХреНрд╖
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдЬрд╛рд░ рдЬреЛ рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рддрд╛ рд╣реИ, рдПрдХ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдЬрд╛рд░ рдлрд╝рд╛рдЗрд▓ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛрдб рдФрд░ рдЗрд╕рдХреА рд╕рднреА рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рд╣реЛрддреА рд╣реИрдВред
рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рд▓рд╛рдн рд╕реНрдкрд╖реНрдЯ рд╣реИ: рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рдЗрд╕рдореЗрдВ рд╡рд╣ рд╕рдм рдХреБрдЫ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ java -jar <myapp>.jar
рд╕реЗ рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред Dockerfile рддреБрдЪреНрдЫ рд╣реИ рдФрд░ рдмреНрдпрд╛рдЬ рдХреА рдирд╣реАрдВред
рдирдХрд╛рд░рд╛рддреНрдордХ рдкрд╣рд▓реВ рдЕрдХреНрд╖рдо рднрдВрдбрд╛рд░рдг рд╣реИред рдХреНрд▓рд╛рд╕рд┐рдХ рдмреВрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ, рдХреЛрдб рдФрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдЕрдиреБрдкрд╛рдд рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╣рдорд╛рд░реЗ рдХреЛрдб рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рдирд╣реАрдВ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡реЗрдм рдкрд╛рд░реНрдЯ рдФрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЦрд╛рд▓реА рдЕрдиреБрдкреНрд░рдпреЛрдЧ, рдЬреЛ start.spring.io рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрддреНрдкрдиреНрди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, 20mb рд▓реЗ рдЬрд╛рдПрдЧрд╛, рдЬрд┐рд╕рдореЗрдВ рд╕реЗ 98% рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реЛрдВрдЧреЗред рдФрд░ рдпрд╣ рдЕрдиреБрдкрд╛рдд рд╡рд┐рдХрд╛рд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рджреМрд░рд╛рди рдмрд╣реБрдд рдЕрдзрд┐рдХ рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИред
рд▓реЗрдХрд┐рди рд╣рдо рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдЖрд╡реЗрджрди рдПрдХрддреНрд░ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рд╕реАрдЖрдИ рд╕рд░реНрд╡рд░ рдкрд░, рдФрд░ рдлрд┐рд░ рд╡рд╛рддрд╛рд╡рд░рдг рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдкрд░ рддреИрдирд╛рдд рд╣реЛрддреЗ рд╣реИрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░, 10 рдЕрд╕реЗрдВрдмрд▓реА 200mb рдкрд░ рдмрдврд╝рддреА рд╣реИ, рдФрд░ 100 - 2 рдЬреАрдмреА рдкрд░, рдЬрд┐рдирдореЗрдВ рд╕реЗ рд╕рдВрд╢реЛрдзрди рдмрд╣реБрдд рдХрдо рд╣реЛрдВрдЧреЗред
рдпрд╣ рддрд░реНрдХ рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рднрдВрдбрд╛рд░рдг рдХреА рд╡рд░реНрддрдорд╛рди рд▓рд╛рдЧрдд рдХреЗ рд▓рд┐рдП, рдпреЗ рд╣рд╛рд╕реНрдпрд╛рд╕реНрдкрдж рдЖрдВрдХрдбрд╝реЗ рд╣реИрдВ рдФрд░ рдЖрдкрдХреЛ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЕрдиреБрдХреВрд▓рди рдкрд░ рд╕рдордп рдирд╣реАрдВ рджреЗрдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рднреА рд╕рдВрдЧрдарди рдХреЗ рдЖрдХрд╛рд░ рдФрд░ рдЙрди рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рдирдХреА рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рддреИрдирд╛рддреА рдХреА рд╕реНрдерд┐рддрд┐ рднреА рджреГрдврд╝рддрд╛ рд╕реЗ рдкреНрд░реЗрд░рд┐рдд рдХрд░ рд╕рдХрддреА рд╣реИ: рдЬрдм рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдФрд░ рд╕рд░реНрд╡рд░ рдкрд╛рд╕ рд╣реЛрддреЗ рд╣реИрдВ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ 100mb рдХрд╛ рдЕрдВрддрд░ рднреА рдмрд╣реБрдд рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд┐рддрд░рд┐рдд рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдореЗрдВ рдпрд╣ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЦрд╛рд╕рдХрд░ рдЬрдм рдЖрдкрдХреЛ рдРрд╕реЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рджреЗрд╢реЛрдВ рдореЗрдВ рддреИрдирд╛рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬреИрд╕реЗ рдХрд┐ рдЪреАрди рдЕрдкрдиреЗ рдлрд╝рд╛рдпрд░рд╡реЙрд▓ рдФрд░ рдЕрд╕реНрдерд┐рд░ рдЪреИрдирд▓реЛрдВ рдХреЗ рд╕рд╛рдеред рдмрд╛рд╣рд░ рдХреА рджреБрдирд┐рдпрд╛ рдХреЗ рд▓рд┐рдПред
рддреЛ, рдХрд╛рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде, рдпрд╣ рдЕрдиреБрдХреВрд▓рди рдХрд╛ рд╕рдордп рд╣реИред
рд╣рдо рдЕрд╕реЗрдВрдмрд▓реА рдХреЛ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝ рдХрд░рддреЗ рд╣реИрдВ, рдпрд╛ рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреНрд▓реЙрдЧ рд╕реЗ рдХреНрдпрд╛ рд╕реАрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
рд▓реЗрдЦ рдПрдХ рдЙрдЪрд┐рдд рд╕рдорд╛рдзрд╛рди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ: COPY my-jar.jar app.jar
рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рдПрдХ рдПрдХрд▓ рдкрд░рдд рдХреЗ рдмрдЬрд╛рдп, рд╣рдореЗрдВ рдХрдИ рдкрд░рддреЗрдВ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдПрдХ рдкрд░рдд рдореЗрдВ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реЛрдВрдЧреЗ, рджреВрд╕рд░рд╛ рд╣рдорд╛рд░рд╛ рдЕрдкрдирд╛ рдХреЛрдб рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЬрд╛рд░ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЕрдирдЬрд╝рд┐рдк рдХрд░рдиреЗ рдФрд░ рд╕рд╛рдордЧреНрд░реА рдХреЛ рдЫрд╡рд┐ рдХреА рд╡рд┐рднрд┐рдиреНрди рдкрд░рддреЛрдВ рдореЗрдВ рдХреЙрдкреА рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдЬрд╛рд░ рдлрд╝рд╛рдЗрд▓ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
рдорд▓реНрдЯреА-рд╕реНрдЯреЗрдЬ рдмрд┐рд▓реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдбреЙрдХрдЯрд░рд╛рдЗрд▓ рдРрд╕рд╛ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ
FROM openjdk:8-jdk-alpine as build WORKDIR /wd COPY prepare_for_docker.sh /usr/local/bin/prepare_for_docker COPY target/demo.jar /wd/app.jar RUN prepare_for_docker /wd/app.jar FROM openjdk:8-jdk-alpine COPY --from=build /wd/docker-dist/BOOT-INF/lib /app/lib COPY --from=build /wd/docker-dist/META-INF /app/META-INF COPY --from=build /wd/docker-dist/BOOT-INF/classes /app ENTRYPOINT ["java","-cp","app:app/lib/*","com.example.demo.DemoApplication"]
рдкрд╣рд▓реЗ рдЪрд░рдг рдореЗрдВ, рд╣рдо рдЕрдкрдиреА рдЬрд╝рд░реВрд░рдд рдХреА рд╣рд░ рдЪреАрдЬрд╝ рдХреЛ рдХреЙрдкреА рдХрд░рддреЗ рд╣реИрдВ, рдЬрд╛рд░ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЕрдирдкреИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рдФрд░ рджреВрд╕рд░реЗ рдЪрд░рдг рдореЗрдВ рд╣рдо рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдФрд░ рд╣рдорд╛рд░реЗ рдХреЛрдб рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкрд░рддреЛрдВ рдореЗрдВ рд░рдЦрддреЗ рд╣реИрдВред
рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ:
- рдкрд╣рд▓реА рдмрд╛рд░ рдЗрдХрдЯреНрдард╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ
- рд╣рдорд╛рд░реЗ рдХреЛрдб рдореЗрдВ рдХреЛрдИ рднреА рдмрджрд▓рд╛рд╡ рдХрд░реЗрдВред
- рд╣рдо
docker build
рдлрд┐рд░ рд╕реЗ рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╕рдВрдкреВрд░реНрдг рдХрд╛рд░реНрдпрд╢реАрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рдХреЙрдкреА рдХрд░рддреЗ рд╕рдордп Using cache
рдкреЛрд╖рд┐рдд рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ
... Step 5/10 : RUN prepare_for_docker app.jar ---> Running in c8e422491eb2 Removing intermediate container c8e422491eb2 ---> c7dcec4ae18a Step 6/10 : FROM openjdk:8-jdk-alpine ---> a3562aa0b991 Step 7/10 : COPY --from=build /wd/docker-dist/BOOT-INF/lib /app/lib ---> Using cache ---> 01b600d7e350 Step 8/10 : COPY --from=build /wd/docker-dist/META-INF /app/META-INF ---> Using cache ---> 5c0c03a3c8f1 Step 9/10 : COPY --from=build /wd/docker-dist/BOOT-INF/classes /app ---> 5ffed6ee5696 Step 10/10 : ENTRYPOINT ["java","-cp","app:app/lib/*","com.example.demo.DemoApplication"] ---> Running in 99957250fe5d Removing intermediate container 99957250fe5d ---> 6735799d9f32 Successfully built 6735799d9f32 Successfully tagged boot2-sample:latest
рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХрд╛ рдПрдХ рд╕реНрдкрд╖реНрдЯ рддрд░реАрдХрд╛ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдПрдХ рдЫреЛрдЯреА рдЖрдзрд╛рд░ рдЫрд╡рд┐ рдмрдирд╛рдирд╛ рд╣реИ, рддрд╛рдХрд┐ рдЗрд╕реЗ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реЗ рдкрд░рд┐рдпреЛрдЬрдирд╛ рддрдХ рди рдЦреАрдВрдЪрд╛ рдЬрд╛ рд╕рдХреЗред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдкрд╣рд▓реА рдкрд░рдд рдЕрдзрд┐рдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╣реЛ рдЬрд╛рддреА рд╣реИред
FROM zeldigas/java-layered-builder as build COPY target/demo.jar app.jar RUN prepare_for_docker app.jar
рд╣рдо рд╕рдорд╛рдзрд╛рди рдХреЛ рдЕрдВрддрд┐рдо рд░реВрдк рджреЗ рд░рд╣реЗ рд╣реИрдВ
рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓реЗрдЦ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╕рдорд╛рдзрд╛рди рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдСрдкрд░реЗрд╢рди рдХреЗ рджреМрд░рд╛рди рдХреБрдЫ рд╕рдорд╕реНрдпрд╛рдПрдВ рдкрд╛рдИ рдЧрдИрдВ, рдЬрд┐рдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдж рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдПрдЧреАред
рд╕рднреА рдлрд╛рдЗрд▓реЗрдВ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдирд╣реАрдВ рд╣реИрдВ
рдпрджрд┐ рдЖрдкрдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрд╣реБ-рдореЙрдбреНрдпреВрд▓ рд╣реИ (рдХрдо рд╕реЗ рдХрдо рдореЙрдбреНрдпреВрд▓ рдП рд╣реИ, рдЬрд┐рд╕ рдкрд░ рдореЙрдбреНрдпреВрд▓ рдмреА рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рд╕реНрдкреНрд░рд┐рдВрдЧ рд╡рд╕рд╛ рдЬрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрдХрдЯреНрдард╛ рд╣реЛрддрд╛ рд╣реИ), рддреЛ рдЗрд╕рдХрд╛ рдПрдХ рдореВрд▓ рд╕рдорд╛рдзрд╛рди рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдкрд░, рдЖрдк рдкрд╛рдПрдВрдЧреЗ рдХрд┐ рдХреЛрдИ рдкрд░рдд рдХреИрд╢рд┐рдВрдЧ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рдХреНрдпрд╛ рдЧрд▓рдд рд╣реБрдЖ?
рдорд╛рдорд▓рд╛ рдЕрддрд┐рд░рд┐рдХреНрдд рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╣реИ: рд╡реЗ рдкрд░рдд рдХреЗ рд▓рд┐рдП рдирд┐рд░рдВрддрд░ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рд╕реНрд░реЛрдд рд╣реИрдВ, рднрд▓реЗ рд╣реА рдЖрдк рдореЙрдбреНрдпреВрд▓ рдХреЛрдб рдореЗрдВ рдХреЛрдИ рдмрджрд▓рд╛рд╡ рди рдХрд░реЗрдВред рдпрд╣ рдорд╛рд╡реЗрди рдЬрд╛рд░ рдлрд╛рдЗрд▓реЗрдВ рдмрдирд╛рдиреЗ рдХреА рдЦрд╝рд╛рд╕рд┐рдпрдд рдХреЗ рдХрд╛рд░рдг рд╣реИ (рдврд╛рд▓ рдХреЗ рд╕рд╛рде, рд╕реНрдерд┐рддрд┐ рдереЛрдбрд╝реА рдмреЗрд╣рддрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ)ред рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рдЗрд╕ рд▓реЗрдЦ рдХрд╛ рд╡рд┐рд╖рдп рдирд╣реАрдВ рд╣реИ (рд╣рд╛рд▓рд╛рдВрдХрд┐, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдпрд╣ рджрд┐рд▓рдЪрд╕реНрдк рдФрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИ), рдЗрд╕рд▓рд┐рдП рд╣рдо рдПрдХ рдХрд╛рдлреА рд╕рд░рд▓ рд╕рдорд╛рдзрд╛рди рдХреА рдУрд░ рдореБрдбрд╝рддреЗ рд╣реИрдВред
рд╣рдо 2 рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдореЗрдВ lib
рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╡рд┐рддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЕрдирдкреИрдХ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЕрдиреНрдп рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рд╕реЗ рдЕрд▓рдЧ рдХрд░рддреЗ рд╣реИрдВред рдЪрд▓реЛ рд╡рд╕рд╛ рдЬрд╛рд░ рдЕрдирдкреИрдХрд┐рдВрдЧ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЕрдВрддрд┐рдо рд░реВрдк рджреЗрдВ:
рдирддреАрдЬрддрди, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЕрддрд┐рд░рд┐рдХреНрдд рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рд▓рдЧреА (1 рдФрд░ 2 рджреЗрдЦреЗрдВ)ред рдпрджрд┐ рдЕрддрд┐рд░рд┐рдХреНрдд рддрд░реНрдХ (3) рдкрд╛рд░рд┐рдд рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЛ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдирд╛рдо рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрд╕рд░реНрдЧ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо (4) рдПрдХ рдЕрд▓рдЧ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред
рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдХреЗ рд╕рд╛рде рдкрд░рд┐рджреГрд╢реНрдп рдХреЗ рд▓рд┐рдП рдбреЙрдХрдлрд╛рдЗрд▓ рдЙрджрд╛рд╣рд░рдгред shared-module
рдФрд░ рд╕рдВрд╕реНрдХрд░рдг 1.0-SNAPSHOT
FROM openjdk:8-jdk-alpine as build COPY target/demo.jar /wd/app.jar RUN prepare_for_docker /wd/app.jar shared-module-1.0 FROM openjdk:8-jdk-alpine COPY --from=build /wd/docker-dist/BOOT-INF/lib /app/lib COPY --from=build /wd/docker-dist/app-lib /app/lib COPY --from=build /wd/docker-dist/META-INF /app/META-INF COPY --from=build /wd/docker-dist/BOOT-INF/classes /app ENTRYPOINT ["java","-cp","app:app/lib/*","com.example.demo.DemoApplication"]
CI рд╕рд░реНрд╡рд░ рдкрд░ рдЪрд▓рд╛рдПрдБ
рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рд╕рдм рдХреБрдЫ рдбрд┐рдмрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдкрд░рд┐рдгрд╛рдо рд╕реЗ рд╕рдВрддреБрд╖реНрдЯ рд╣реЛрдХрд░, рд╣рдордиреЗ CI рд╕рд░реНрд╡рд░ рдкрд░ рдЪрд▓рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рдФрд░ рдмрд┐рд▓реНрдб рд▓реЙрдЧ рд╕реЗ рдкрд╛рдпрд╛ рдХрд┐ рдХреЛрдИ рдЪрдорддреНрдХрд╛рд░ рдирд╣реАрдВ рд╣реБрдЖ, рдпрд╛ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдкрд░рд┐рдгрд╛рдо рдирд┐рд░рдВрддрд░ рдирд╣реАрдВ рдереЗ: рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдХреИрд╢рд┐рдВрдЧ рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдЕрдЧрд▓реА рдмрд╛рд░ рд╕рднреА рдкрд░рддреЗрдВ рдирдИ рдереАрдВред
рдирддреАрдЬрддрди, рдЕрдкрд░рд╛рдзреА рдХреА рдЦреЛрдЬ рдХреА рдЧрдИ - рдбреЙрдХрдЯрд░ рдХреИрд╢, рдпрд╛ рд╡рд┐рднрд┐рдиреНрди рдПрдЬреЗрдВрдЯреЛрдВ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЗрд╕рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ (рд╣рдорд╛рд░реА рд╡рд┐рдзрд╛рдирд╕рднрд╛ рд╕реАрдЖрдИ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдПрдЬреЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдХреЛ рднреА рдирд╣реАрдВ рдкрдХрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ)ред рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ, рдЕрдЧрд░ рдбреЙрдХрдЯрд░ рдХреИрд╢ рдореЗрдВ рдХреЛрдИ рдЙрдкрдпреБрдХреНрдд рдкрд░рддреЗрдВ рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдПрдХ рд╣реА рд╕реЗрдЯ рд╕реЗ рдПрдХ рдЕрд▓рдЧ рдЪреЗрдХрд╕рдо рдХреЗ рд╕рд╛рде рдкрд░рддреЗрдВ рдкреНрд░рд╛рдкреНрдд рдХреА рдЬрд╛рддреА рд╣реИрдВред рдЖрдк рдЗрд╕реЗ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдирд┐рд░реНрдорд╛рдг рдХреЛ --no-cache
рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде рдЪрд▓рд╛рдХрд░, рдпрд╛ рдкрд╣рд▓реА рдмрд╛рд░ рдЫрд╡рд┐ рдХреЛ рд╣рдЯрд╛рдХрд░ рдФрд░ рд╕рднреА рдордзреНрдпрд╡рд░реНрддреА рдкрд░рддреЛрдВ рдХреЛ рдмрдирд╛рдХрд░ред рдирддреАрдЬрддрди, рдЖрдкрдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рдЪреЗрдХрд╕рдо рд▓реЗрдпрд░ рдорд┐рд▓рддрд╛ рд╣реИ, рдЬреЛ рдкрд┐рдЫрд▓реЗ рд╕рднреА рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреЛ рдирдХрд╛рд░ рджреЗрддрд╛ рд╣реИред

рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЗ рд╣реИрдВ:
- рдпрджрд┐ рдЖрдкрдХрд╛ CI- рд╕рд┐рд╕реНрдЯрдо рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рд╕рд░реНрдХрд▓ CI рдиреЗ рдЕрд╕реЗрдВрдмрд▓реА рдХреЗ рд▓рд┐рдП рд╕рд╛рдЭрд╛ рдХреИрд╢ рдХреЗ рд▓рд┐рдП рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рд╣реИ)
- рдПрдЬреЗрдВрдЯреЛрдВ рдХреЗ рдмреАрдЪ рдбреЙрдХ рдХреИрд╢ рдХреЗ рд╕рд╛рде рдПрдХ рдЕрдиреБрднрд╛рдЧ рдХреЛ рдлреЗрд░рдмрджрд▓ рдХрд░рдирд╛
- рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдХреИрд╢ рдкреНрд░рдмрдВрдзрди
--cache-from
рд▓рд╛рдн рдЙрдард╛рдПрдВ ( --cache-from
рдХреИрд╢ --cache-from
)
рд╣рдо рддреАрд╕рд░реЗ рддрд░реАрдХреЗ рд╕реЗ рдЧрдП, рдХреНрдпреЛрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдерд╛ред рд╡рд┐рдХрд▓реНрдк рдЖрдкрдХреЛ рдбреЙрдХ рдбреЗрдореЙрди рдХреЛ рдпрд╣ рдмрддрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдХрд┐рди рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЗ рджреМрд░рд╛рди рдХреИрд╢рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЖрдк рдЖрд╡рд╢реНрдпрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдХрдИ рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рд╡реЗ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рд╣реИрдВред рдпрджрд┐ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЫрд╡рд┐ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ, рддреЛ рдЗрд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдЕрдирджреЗрдЦрд╛ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдирд┐рд░реНрдорд╛рдг рд╕реЗ рдкрд╣рд▓реЗ рдЦреАрдВрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдХрдВрдЯреЗрдирд░ рдЕрд╕реЗрдВрдмрд▓реА рдХреИрд╕реА рджрд┐рдЦрддреА рд╣реИ:
set -e version=...
рд╣рдо рдХреЗрд╡рд▓ рд╕рдмрд╕реЗ рд╣рд╛рд▓рд┐рдпрд╛ рдЫрд╡рд┐ рд╕реЗ рдкрд░рддреЛрдВ рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдЕрдХреНрд╕рд░ рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЛрдИ рднреА рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рддрд░реНрдХ рдХреЛ рд╣рд╡рд╛ рджреЗрдиреЗ рдФрд░ рдХреБрдЫ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рдкреАрдЫреЗ рдХрд░рдиреЗ рдпрд╛ vcs рдХрдорд┐рдЯ рдХреА рдЖрдИрдбреА рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реЗрд╢рд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рд╣рдо рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рдЖрдкрдХреЗ CI рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХреЗ рдЕрдиреБрдХреВрд▓ рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд╕рд╛рде рдкрд░рддреЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░
рд╕рдорд╛рдзрд╛рди рдЕрдЪреНрдЫреЗ рдкрд░рд┐рдгрд╛рдо рджрд┐рдЦрд╛рддрд╛ рд╣реИ, рдЦрд╛рд╕рдХрд░ рдЬрдм рд╡рд┐рдХрд╛рд╕ рдХреЗ рдПрдХ рд╕рдХреНрд░рд┐рдп рдЪрд░рдг рдФрд░ рдПрдХ рдЯреНрдпреВрдиреНрдб рд╕реАрдбреА рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХреЗ рд╕рд╛рде рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдиреАрдЪреЗ рджрд┐рдпрд╛ рдЧрдпрд╛ рдЧреНрд░рд╛рдлрд╝ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рдореЗрдВ рдЕрдиреБрдХреВрд▓рди рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рджрд┐рдЦрд╛рддрд╛ рд╣реИред рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рджреЗрдЦрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рд░реИрдЦрд┐рдХ рд╡рд┐рдХрд╛рд╕ 70 рд╡реАрдВ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реА рд╕реНрдкрд╕реНрдореЛрдбрд┐рдХ рдореЗрдВ рдмрджрд▓ рдЧрдпрд╛ рд╣реИ (60 рдХреЗ рджрд╢рдХ рдореЗрдВ рд╡рд┐рдлрд▓рддрд╛ рдмрд┐рд▓реНрдб рдПрдЬреЗрдВрдЯреЛрдВ рдкрд░ рдбрд┐рдмрдЧрд┐рдВрдЧ рдХрд╛рд░реНрдп рдХреЗ рд╕рд╛рде рдареАрдХ рд╕реЗ рдЬреБрдбрд╝реА рд╣реБрдИ рд╣реИ)ред рдмреЗрд╕ рдЗрдореЗрдЬ (рд╣рд╛рдИ) рдФрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА (рд▓реЛрдЕрд░) рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдХреЗ рдЗрдорд┐рд╢рди

рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рднрдВрдбрд╛рд░рдг рдЕрдиреБрдХреВрд▓рди рдПрдХ рд╕реБрдЦрдж, рдмрд▓реНрдХрд┐ рдПрдХ рдорд╛рдзреНрдпрдорд┐рдХ рдмреЛрдирд╕ рд╣реИред рдХрдИ рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ рдкреБрд░рд╛рдиреЗ рдХреЗ рдКрдкрд░ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдХреА рддреИрдирд╛рддреА рдХрд╛ рддреНрд╡рд░рдг рдЕрдзрд┐рдХ рд╕реБрдЦрджрд╛рдпрдХ рд╣реИред
рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдпрд╣ рддрдХрдиреАрдХ рдПрдХрд▓ рдЫрд╡рд┐ (рдЕрд▓реНрдкрд╛рдЗрди рдФрд░ рдЕрдиреНрдп рд╣рд▓реНрдХреЗ рдореВрд▓ рдЪрд┐рддреНрд░, рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП рдХрд╕реНрдЯрдо рд░рдирдЯрд╛рдЗрдо) рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рд╕реЗ рдЕрдиреНрдп рджреГрд╖реНрдЯрд┐рдХреЛрдгреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдлреА рд╕рдВрдЧрдд рд╣реИред рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдХреИрд╢рд┐рдВрдЧ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЫрд╡рд┐ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рдирд┐рдпрдореЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВ рдФрд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИред