рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░!
рдореИрдВ рдЙрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝реА рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдЬрд┐рд╕реЗ рдореИрдВ рдкрд┐рдЫрд▓реЗ рдЫрд╣ рдорд╣реАрдиреЛрдВ рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдореИрдВ рдЕрдкрдиреЗ рдЦрд╛рд▓реА рд╕рдордп рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреА рдкреНрд░реЗрд░рдгрд╛ рдореБрдЦреНрдп рдХрд╛рд░реНрдп рдореЗрдВ рдХрд┐рдП рдЧрдП рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рд╕реЗ рдорд┐рд▓реАред
рдПрдХ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░, рд╣рдо рдорд╛рдЗрдХреНрд░реЛрд╕реЗрд░реНрд╡рд┐рд╕ рдХреА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдореБрдЦреНрдп рд╕рдорд╕реНрдпрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ рдЬреЛ рд╕рдордп рдХреЗ рд╕рд╛рде рд╕реНрд╡рдпрдВ рдкреНрд░рдХрдЯ рд╣реБрдИ рдФрд░ рдЗрди рд╕реЗрд╡рд╛рдУрдВ рдХреА рдмрдврд╝реА рд╣реБрдИ рд╕рдВрдЦреНрдпрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд░рд╣реА рд╣реИред рдЬрдм рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реЗрд╡рд╛ рдкрд╛рдВрдЪ рд╕реЗ рд╕рд╛рдд рдЕрдиреНрдп рд╕реЗрд╡рд╛рдУрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИ, рддреЛ рдХреБрдЫ рдЕрдиреНрдп рдбреЗрдЯрд╛рдмреЗрд╕ (рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдХрдИ) рдмреВрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдлрд┐рд░ рдЗрд╕реЗ "рд▓рд╛рдЗрд╡" рд░реВрдк рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛, рдЗрд╕рд▓рд┐рдП рдмреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред рдЖрдкрдХреЛ рд╣рд░ рддрд░рдл рдЗрддрдиреЗ рдордЬрд╝рдмреВрддреА рд╕реЗ рдореЛрдХрд╛ рд▓рдЧрд╛рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЖрдк рдЦреБрдж рднреА рдЖрдЯрд╛ рдирд╣реАрдВ рдмрдирд╛ рдкрд╛рдПрдВрдЧреЗред рдареАрдХ рд╣реИ, рдпрд╛ рдХрд┐рд╕реА рднреА рддрд░рд╣ рдПрдХ рдкрд░реАрдХреНрд╖рдг рд╡рд╛рддрд╛рд╡рд░рдг рдХрд╛ рдЖрдпреЛрдЬрди рдХрд░реЗрдВ рдЬрд╣рд╛рдВ рд╕рднреА рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд▓реЙрдиреНрдЪ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВред
рджрд░рдЕрд╕рд▓, рджреВрд╕рд░реЗ рд╡рд┐рдХрд▓реНрдк рдХреА рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рдореИрдВ рд╕рд┐рд░реНрдл рдЬрд╝реЗрдирдореИрди рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдмреИрда рдЧрдпрд╛ред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдпрд╣ рдбреЙрдХрдЯрд░-рдХрдВрдкреЛрдЬрд╝ рдФрд░ рдЯреЗрд╕реНрдЯ рдХрдВрдЯреЗрдирд░реНрд╕ рд╣рд╛рдЗрдмреНрд░рд┐рдб рдЬреИрд╕рд╛ рдХреБрдЫ рд╣реИ, рдХреЗрд╡рд▓ рдЬрд╛рд╡рд╛ (рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рднрд╛рд╖рд╛) рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рдХрд┐рдП рдмрд┐рдирд╛ рдФрд░ HTTP API рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЛ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдмрдирд╛рдиреЗ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рдеред
xenvman
рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдПрдХ рд╕рд░рд▓ HTTP рд╕рд░реНрд╡рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рдХрд┐рд╕реА рднреА рднрд╛рд╖рд╛ рд╕реЗ рд╕рднреА рдЙрдкрд▓рдмреНрдз рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬреЛ рдЗрд╕ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЛ рдмреЛрд▓ рд╕рдХрддрд╛ рд╣реИред
рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ xenvman рдХреНрдпрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ:
- рд╕рд░рд▓ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдкрд░реНрдпрд╛рд╡рд░рдг рд╕рд╛рдордЧреНрд░реА рдХрд╛ рд▓рдЪреАрд▓реЗ рдврдВрдЧ рд╕реЗ рд╡рд░реНрдгрди рдХрд░реЗрдВ
- рдордХреНрдЦреА рдкрд░ рдЪрд┐рддреНрд░ рдмрдирд╛рдПрдБ
- рдХрдВрдЯреЗрдирд░реЛрдВ рдХреА рд╕рд╣реА рд╕рдВрдЦреНрдпрд╛ рдмрдирд╛рдПрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдПрдХ рдкреГрдердХ рдиреЗрдЯрд╡рд░реНрдХ рдореЗрдВ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░реЗрдВ
- рдмрд╛рд╣рд░ рдХреЗ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ рдЖрдВрддрд░рд┐рдХ рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ рдХреЛ рдЖрдЧреЗ рдмрдврд╝рд╛рдПрдВ, рддрд╛рдХрд┐ рдкрд░реАрдХреНрд╖рдг рдЕрдиреНрдп рдореЗрдЬрдмрд╛рдиреЛрдВ рд╕реЗ рднреА рдЖрд╡рд╢реНрдпрдХ рд╕реЗрд╡рд╛рдУрдВ рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХреЗрдВ
- рдХрд╛рдо рдХреЗ рдорд╛рд╣реМрд▓ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рдмрд┐рдирд╛, рдкрд░реНрдпрд╛рд╡рд░рдг рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдмрджрд▓реЗрдВ (рдмрдВрдж рдХрд░реЛ, рд╢реБрд░реВ рдХрд░реЛ рдФрд░ рдирдП рдХрдВрдЯреЗрдирд░ рдЬреЛрдбрд╝реЗрдВ)ред
рдкреНрд░рддрд┐рд╡реЗрд╢
рдЬрд╝реЗрдирдореИрди рдореЗрдВ рдореБрдЦреНрдп рдЪрд░рд┐рддреНрд░ рдкрд░реНрдпрд╛рд╡рд░рдг рд╣реИред рдпрд╣ рдПрдХ рдЕрд▓рдЧ-рдерд▓рдЧ рдмреБрд▓рдмреБрд▓рд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЖрдкрдХреА рд╕реЗрд╡рд╛ рдХреЗ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдирд┐рд░реНрднрд░рддрд╛ (рдбреЙрдХрдЯрд░ рдХрдВрдЯреЗрдирд░реЛрдВ рдореЗрдВ рдкреИрдХ) рд▓реЙрдиреНрдЪ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред

рдКрдкрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдЖрдВрдХрдбрд╝рд╛ xenvman рд╕рд░реНрд╡рд░ рдФрд░ рд╕рдХреНрд░рд┐рдп рд╡рд╛рддрд╛рд╡рд░рдг рдХреЛ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рд╕реЗрд╡рд╛рдПрдБ рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдЪрд▓ рд░рд╣реЗ рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рд╡рд╛рддрд╛рд╡рд░рдг рд╕реАрдзреЗ рдПрдХреАрдХрд░рдг рдкрд░реАрдХреНрд╖рдг рдХреЛрдб рд╕реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдкрд░ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕
рдкрд░реНрдпрд╛рд╡рд░рдг рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╕реАрдзреЗ рддреМрд░ рдкрд░ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдЬреЗрдПрд╕ рдореЗрдВ рдЫреЛрдЯреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИрдВред xenvman рдореЗрдВ рдЗрд╕ рднрд╛рд╖рд╛ рдХрд╛ рдПрдХ рдЕрдВрддрд░реНрдирд┐рд░реНрдорд┐рдд рджреБрднрд╛рд╖рд┐рдпрд╛ рд╣реИ, рдФрд░ рдЬрдм рдЗрд╕реЗ рдПрдХ рдирдпрд╛ рд╡рд╛рддрд╛рд╡рд░рдг рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдХреЗрд╡рд▓ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рд╕реВрдЪреА рдореЗрдВ рдПрдХ рдпрд╛ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдХрдВрдЯреЗрдирд░ рдЬреЛрдбрд╝рддрд╛ рд╣реИред
рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╕рд░реНрд╡рд░ рдХреЗ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХреЗ рдмрд┐рдирд╛ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдмрджрд▓рдиреЗ / рдЬреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЪреБрдирд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдорддреМрд░ рдкрд░ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЗрд╡рд▓ рднрд╛рд╖рд╛ рдХреА рдореВрд▓ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдФрд░ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ (рдЕрдЪреНрдЫреЗ рдкреБрд░рд╛рдиреЗ ES5, рдХреЛрдИ DOM, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдФрд░ рдЕрдиреНрдп рдЬрд╛рджреВ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рднреА рд╡рд┐рд╢реЗрд╖ рдХрдард┐рдирд╛рдЗрдпреЛрдВ рдХрд╛ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ JS рдХреЛ рдмрд┐рд▓реНрдХреБрд▓ рдЬрд╛рдирддреЗ рд╣реИрдВред
рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рдпреЛрдЧреНрдп рд╣реИрдВ, рдЕрд░реНрдерд╛рдд рд╣рдо рдЕрдкрдиреЗ HTTP рдЕрдиреБрд░реЛрдз рдореЗрдВ рдХреБрдЫ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдкрд╛рд╕ рдХрд░рдХреЗ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЗ рддрд░реНрдХ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдордХреНрдЦреА рдкрд░ рдЪрд┐рддреНрд░ рдмрдирд╛рдПрдБ
рдЬрд╝реЗрдирдореИрди рдХреА рд╕рдмрд╕реЗ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ, рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╕рд╣реА рдбреЙрдХрд░ рдЫрд╡рд┐рдпреЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рд╣реИред рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рдХреНрдпреЛрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ?
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░, рдХрд┐рд╕реА рд╕реЗрд╡рд╛ рдХреА рдЫрд╡рд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ рдЕрд▓рдЧ рд╢рд╛рдЦрд╛ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддрдм рддрдХ рд╢реБрд░реВ рдХрд░реЗрдВ рдФрд░ рддрдм рддрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ рдЬрдм рддрдХ рдЧрд┐рдЯрд▓реИрдм рд╕реАрдЖрдИ рдПрдХрддреНрд░ рди рд╣реЛ рдЬрд╛рдПрдВ рдФрд░ рдЫрд╡рд┐ рдХреЛ рднрд░ рджреЗрдВред
рдпрджрд┐ рдХреЗрд╡рд▓ рдПрдХ рд╕реЗрд╡рд╛ рдмрджрд▓ рдЧрдИ рд╣реИ, рддреЛ 3-5 рдорд┐рдирдЯ рд▓рдЧ рд╕рдХрддреЗ рд╣реИрдВред
рдФрд░ рдЕрдЧрд░ рд╣рдо рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдЕрдкрдиреА рд╕реЗрд╡рд╛ рдореЗрдВ рдирдИ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВ, рдпрд╛ рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХреНрдпреЛрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЕрдЪреНрдЫреЗ рдкреБрд░рд╛рдиреЗ fmt.Printf
рдХреЛ рдЖрдЧреЗ рдпрд╛ рдкреАрдЫреЗ рдХреЛрдб рдмрджрд▓рдирд╛, рдпрд╛ рдХрд┐рд╕реА рднреА рддрд░рд╣ рдХреЛрдб рдХреЛ рдмрджрд▓рдирд╛, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ 5 рдорд┐рдирдЯ рдХреА рджреЗрд░реА рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдмреБрдЭрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ ( рдХреЛрдб рд▓реЗрдЦрдХреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд╣рдорд╛рд░рд╛)ред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рд╣рдо рдХреЛрдб рдореЗрдВ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдбрд┐рдмрдЧрд┐рдВрдЧ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕реЗ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рд╕рдорд╛рдкреНрдд рдмрд┐рдирд╛рд░ рдХреЛ HTTP рдЕрдиреБрд░реЛрдз рдореЗрдВ рд╕рдВрд▓рдЧреНрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЗрд╕ рддрд░рд╣ рдХреА рд╕реНрд╡реАрдХреГрддрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЯреЗрдореНрдкрд▓реЗрдЯ рдЗрд╕ рдмрд┐рдирд╛рд░ рдХреЛ рд▓реЗ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдЪрд▓рддреЗ-рдлрд┐рд░рддреЗ рдПрдХ рдЕрд╕реНрдерд╛рдпреА рдЫрд╡рд┐ рдмрдирд╛рдПрдЧрд╛, рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрдВрдЯреЗрдирд░ рд▓реЙрдиреНрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреИрд╕реЗ рдХрд┐ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реБрдЖ рдерд╛ред
рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░, рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рдЬрд╛рдВрдЪрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдмрд┐рдирд╛рд░ рдорд╛рдкрджрдВрдбреЛрдВ рдореЗрдВ рдореМрдЬреВрдж рд╣реИ, рдФрд░ рдпрджрд┐ рдРрд╕рд╛ рд╣реИ, рддреЛ рд╣рдо рдЫрд╡рд┐ рдХреЛ рдЪрд▓рддреЗ рд╣реИрдВ, рдЕрдиреНрдпрдерд╛ рд╣рдо dev
рд╢рд╛рдЦрд╛ рдХреЗ latest
рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВред рдХрдВрдЯреЗрдирд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдХрд╛ рдХреЛрдб рджреЛрдиреЛрдВ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рд╣реИред
рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдЙрджрд╛рд╣рд░рдг
рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рдорд╛рдЗрдХреНрд░реЛ-рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВред
рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдо рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЪрдорддреНрдХрд╛рд░ рд╕рд░реНрд╡рд░ рд▓рд┐рдЦрддреЗ рд╣реИрдВ (рдЪрд▓реЛ рдЗрд╕реЗ wut
рдХрд╣рддреЗ рд╣реИрдВ), рдЬрд┐рд╕реЗ рд╡рд╣рд╛рдВ рд╕рдм рдХреБрдЫ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛рдмреЗрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЦреИрд░, рдПрдХ рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдордиреЗ MongoDB рдХреЛ рдЪреБрдирд╛ред рдЗрд╕рд▓рд┐рдП, рдкреВрд░реНрдг рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдПрдХ рдХрд╛рд░реНрдпрд╢реАрд▓ рдореЛрдВрдЧреЛ рд╕рд░реНрд╡рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЖрдк рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЗрд╕реЗ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдФрд░ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрджрд╛рд╣рд░рдг рдХреА рд╕рд╛рджрдЧреА рдФрд░ рджреГрд╢реНрдпрддрд╛ рдХреЗ рд▓рд┐рдП, рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдРрд╕рд╛ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ (рдЕрдиреНрдп рдХреЗ рд╕рд╛рде, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди, рдпрд╣ рд╕рдЪреНрдЪрд╛рдИ рдХреА рддрд░рд╣ рдЕрдзрд┐рдХ рд╣реЛрдЧрд╛)ред
рддреЛ рд╣рдо Mongo рдЪрд▓рд╛рдиреЗ рдФрд░ рд╣рдорд╛рд░реЗ wut
рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд╛рддрд╛рд╡рд░рдг рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП xenvman рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВрдЧреЗред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рдПрдХ рдЖрдзрд╛рд░ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдмрдирд╛рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕рднреА рдЯреЗрдореНрдкрд▓реЗрдЯ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗ:
$ mkdir xenv-templates && cd xenv-templates
рдЕрдЧрд▓рд╛, рджреЛ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдмрдирд╛рдПрдВ, рдПрдХ рдорд╛рдирдЧреЛ рдХреЗ рд▓рд┐рдП, рджреВрд╕рд░рд╛ рд╣рдорд╛рд░реЗ рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП:
$ touch mongo.tpl.js wut.tpl.js
mongo.tpl.js
mongo.tpl.js
рдЦреЛрд▓реЗрдВ рдФрд░ рд╡рд╣рд╛рдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓рд┐рдЦреЗрдВ:
function execute(tpl, params) { var img = tpl.FetchImage(fmt("mongo:%s", params.tag)); var cont = img.NewContainer("mongo"); cont.SetLabel("mongo", "true"); cont.SetPorts(27017); cont.AddReadinessCheck("net", { "protocol": "tcp", "address": '{{.ExternalAddress}}:{{.Self.ExposedPort 27017}}' }); }
рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рджреЛ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдирд┐рд╖реНрдкрд╛рджрди () рдлрд╝рдВрдХреНрд╢рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдкрд╣рд▓рд╛ tpl рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдЬрд┐рд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рджреВрд╕рд░рд╛ рддрд░реНрдХ (рдкрд░рдо) рд╕рд┐рд░реНрдл рдПрдХ JSON рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рд╣рдо рдЕрдкрдиреЗ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рдкреИрд░рд╛рдореАрдЯрд░ рдХрд░реЗрдВрдЧреЗред
рд▓рд╛рдЗрди рдореЗрдВ
var img = tpl.FetchImage(fmt("mongo:%s", params.tag));
рд╣рдо xenvman рдХреЛ docker mongo рдЫрд╡рд┐ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддреЗ рд╣реИрдВ mongo:<tag>
, рдЬрд╣рд╛рдВ <tag>
рдЙрд╕ рдЫрд╡рд┐ рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг рд╣реИ рдЬрд┐рд╕рдХрд╛ рд╣рдо рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдпрд╣ рд░реЗрдЦрд╛ docker pull mongo:<tag>
рдмрд░рд╛рдмрд░ рд╣реИ, рдПрдХрдорд╛рддреНрд░ рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ tpl
рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рднреА рдХрд╛рд░реНрдп рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдШреЛрд╖рдгрд╛рддреНрдордХ рд╣реИрдВ, рдЕрд░реНрдерд╛рдд, рдЫрд╡рд┐ рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЗрд╡рд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬрдм xenvman рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕рднреА рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдЧрд╛ред
рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЫрд╡рд┐ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдПрдХ рдХрдВрдЯреЗрдирд░ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ:
var cont = img.NewContainer("mongo");
рдлрд┐рд░ рд╕реЗ, рдХрдВрдЯреЗрдирд░ рдХреЛ рддреБрд░рдВрдд рдЗрд╕ рд╕реНрдерд╛рди рдкрд░ рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд╣рдо рдмрд╕ рдЗрд╕реЗ рдмрдирд╛рдиреЗ рдХреЗ рдЗрд░рд╛рджреЗ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдмреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдПред
рдЕрдЧрд▓рд╛, рд╣рдордиреЗ рдЕрдкрдиреЗ рдХрдВрдЯреЗрдирд░ рдкрд░ рдПрдХ рд▓реЗрдмрд▓ рд▓рдЧрд╛рдпрд╛:
cont.SetLabel("mongo", "true");
рд╢реЙрд░реНрдЯрдХрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдХрдВрдЯреЗрдирд░ рдПрдХ рджреВрд╕рд░реЗ рдХреЛ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдкрд╛ рд╕рдХреЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЖрдИрдкреА рдкрддрд╛ рдпрд╛ рд╣реЛрд╕реНрдЯ рдирд╛рдо рджрд░реНрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
рдЕрдм рд╣рдореЗрдВ рдЖрдВрддрд░рд┐рдХ Mongo рдкреЛрд░реНрдЯ (27017) рдХреЛ рд╣реИрдВрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рдЖрд╕рд╛рдиреА рд╕реЗ рдЗрд╕ рддрд░рд╣ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
cont.SetPorts(27017);
рдЬрд╝реЗрдирд╡рдореИрди рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ рд╕рдлрд▓ рдирд┐рд░реНрдорд╛рдг рдкрд░ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдХрд┐ рд╕рднреА рд╕реЗрд╡рд╛рдПрдБ рди рдХреЗрд╡рд▓ рдЪрд▓ рд░рд╣реА рд╣реИрдВ, рдмрд▓реНрдХрд┐ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВред Xenvman рдиреЗ рдЗрд╕рдХреЗ рд▓рд┐рдП рддрддреНрдкрд░рддрд╛ рдЬрд╛рдБрдЪ рдХреА рд╣реИред
рд╣рдорд╛рд░реЗ рдЖрдо рдХрдВрдЯреЗрдирд░ рдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рдЬреЛрдбрд╝реЗрдВ:
cont.AddReadinessCheck("net", { "protocol": "tcp", "address": '{{.ExternalAddress}}:{{.Self.ExposedPort 27017}}' });
рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣рд╛рдВ рдкрддрд╛ рдмрд╛рд░ рдореЗрдВ рд╕реНрдЯрдмреНрд╕ рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рд▓реЙрдиреНрдЪ рд╕реЗ рдареАрдХ рдкрд╣рд▓реЗ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЗрд╕рдХреЗ рдмрдЬрд╛рдп {{.ExternalAddress}}
рд╣реЛрд╕реНрдЯ рдЪрд▓рд╛рдиреЗ рд╡рд╛рд▓реЗ xenvman {{.ExternalAddress}}
рдмрд╛рд╣рд░реА рдкрддреЗ рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ {{.Self.ExposedPort 27017}}
рдмрдЬрд╛рдп {{.Self.ExposedPort 27017}}
рдЖрдВрддрд░рд┐рдХ 27017 рдХреЛ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдмрд╛рд╣рд░реА рдкреЛрд░реНрдЯ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдпрд╣рд╛рдБ рдкреНрд░рдХреНрд╖реЗрдк рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдкрдврд╝реЗрдВред
рдЗрд╕ рд╕рдм рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдо рдкрд░реНрдпрд╛рд╡рд░рдг рдореЗрдВ рдЪрд▓ рд░рд╣реЗ рдорд╛рдирдЧреЛ рд╕реЗ рдЬреБрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореЗрдЬрд╝рдмрд╛рди рд╕реЗ, рдЬрд┐рд╕ рдкрд░ рд╣рдо рдЕрдкрдирд╛ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рддреЗ рд╣реИрдВред
wut.tpl.js
рддреЛ, рдЧ, рдореЛрдВрдЧрд╛ рдХреЗ рд╕рд╛рде рдирд┐рдкрдЯрд╛, рд╣рдо рдЕрдкрдиреЗ wut
рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдЯреЗрдореНрдкрд▓реЗрдЯ рд▓рд┐рдЦреЗрдВрдЧреЗред
рдЪреВрдБрдХрд┐ рд╣рдо рдЪрд▓рддреЗ-рдЪрд▓рддреЗ рдЫрд╡рд┐ рдПрдХрддреНрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рд╣реЛрдЧрд╛:
function execute(tpl, params) { var img = tpl.BuildImage("wut-image"); img.CopyDataToWorkspace("Dockerfile");
рдЪреВрдБрдХрд┐ рд╣рдо рдпрд╣рд╛рдБ рдЪрд┐рддреНрд░ рдХрд╛ BuildImage()
рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдо BuildImage()
рдмрдЬрд╛рдп FetchImage()
:
var img = tpl.BuildImage("wut-image");
рдЫрд╡рд┐ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдХрдИ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА:
Dockerfile - рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреИрд╕реЗ рдПрдХ рдЫрд╡рд┐ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджреЗрд╢
config.toml - рд╣рдорд╛рд░реЗ wut
рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рд╡рд┐рдиреНрдпрд╛рд╕ рдлрд╛рдЗрд▓
img.CopyDataToWorkspace("Dockerfile");
рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ img.CopyDataToWorkspace("Dockerfile");
рд╣рдо рдЕрд╕реНрдерд╛рдпреА рдбреЗрдЯрд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реЗ рдЯреЗрдореНрдкрд▓реЗрдЯ рдбреЗрдЯрд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реЗ рдбреЙрдХрд░рдлрд╝рд╛рдЗрд▓ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рддреЗ рд╣реИрдВред
рдбреЗрдЯрд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдЕрдкрдиреЗ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рднреА рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдЯреЛрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЕрд╕реНрдерд╛рдпреА рдХрд╛рд░реНрдп рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ, рд╣рдо рдЙрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рддреЗ рд╣реИрдВ (рдЬреЛ img.CopyDataToWorkspace () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ) рдЫрд╡рд┐ рдореЗрдВ рдорд┐рд▓рддреА рд╣реИрдВред
рдирд┐рдореНрди рдкреНрд░рдХрд╛рд░ рд╣реИрдВ:
рд╣рдо рдЕрдкрдиреЗ рд╕рд░реНрд╡рд░ рдХреЗ рдмрд┐рдирд░ рдХреЛ рд╕реАрдзреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдореЗрдВ, рдПрдиреНрдХреЛрдбреЗрдб (рдмреЗрд╕ 64) рдлреЙрд░реНрдо рдореЗрдВ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред рдФрд░ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдореЗрдВ, рд╣рдо рдмрд╕ рдЗрд╕реЗ рдбрд┐рдХреЛрдб рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдкрд░рд┐рдгрд╛рдореА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ wut
рдирд╛рдо рдХреЗ рддрд╣рдд рдлрд╛рдЗрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдпрд╢реАрд▓ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рд╕реЗрд╡ рдХрд░рддреЗ рд╣реИрдВред
рдлрд┐рд░ рдПрдХ рдХрдВрдЯреЗрдирд░ рдмрдирд╛рдПрдВ рдФрд░ рдЙрд╕рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдорд╛рдЙрдВрдЯ рдХрд░реЗрдВ:
var cont = img.NewContainer("wut"); cont.MountData("config.toml", "/config.toml", {"interpolate": true});
MountData()
рд▓рд┐рдП рдПрдХ рдХреЙрд▓ рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдбреЗрдЯрд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реЗ config.toml
рдлрд╝рд╛рдЗрд▓ рдХреЛ рдХрдВрдЯреЗрдирд░ рдХреЗ рдЕрдВрджрд░ /config.toml
рдирд╛рдо рд╕реЗ /config.toml
ред interpolate
рдлреНрд▓реИрдЧ xenvman рдХреЛ рд╕рд░реНрд╡рд░ рд╕реЗ рдХрд╣рддрд╛ рд╣реИ рдХрд┐ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдмрдврд╝рддреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╡рд╣рд╛рдВ рдореМрдЬреВрдж рд╕рднреА рд╕реНрдЯрдмреНрд╕ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рдПред
рдпрд╣рд╛рдБ рд╡рд┐рдиреНрдпрд╛рд╕ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:
{{with .ContainerWithLabel "mongo" "" -}} mongo = "{{.Hostname}}/wut" {{- end}}
рдпрд╣рд╛рдБ рд╣рдо mongo
рд▓реЗрдмрд▓ рд╡рд╛рд▓реЗ рдХрдВрдЯреЗрдирд░ рдХреА рддрд▓рд╛рд╢ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕рдХреЗ рдкрд░реНрдпрд╛рд╡рд░рдг рдореЗрдВ рдЬреЛ рднреА рд╣реЛ, рдЗрд╕рдХреЗ рд╣реЛрд╕реНрдЯ рдирд╛рдо рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВред
рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреЗ рдмрд╛рдж, рдлрд╝рд╛рдЗрд▓ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддреА рд╣реИ:
mongo = тАЬmongo.0.mongo.xenv/wutтАЭ
рдЕрдЧрд▓рд╛, рд╣рдо рдлрд┐рд░ рд╕реЗ рдкреЛрд░реНрдЯ рдкреЛрд╕реНрдЯ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рддрддреНрдкрд░рддрд╛ рдЬрд╛рдВрдЪ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕ рдмрд╛рд░ HTTP:
cont.SetPorts(params.port); cont.AddReadinessCheck("http", { "url": fmt('http://{{.ExternalAddress}}:{{.Self.ExposedPort %v}}/', params.port), "codes": [200] });
рд╣рдорд╛рд░реЗ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдЗрд╕рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВ, рдФрд░ рд╣рдо рдЙрдиреНрд╣реЗрдВ рдПрдХреАрдХрд░рдг рдкрд░реАрдХреНрд╖рдг рдХреЛрдб рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
import "github.com/syhpoon/xenvman/pkg/client" import "github.com/syhpoon/xenvman/pkg/def"
рдРрд╕рд╛ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд▓реЗрдЦрди рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕рдордп рд▓рдЧреЗрдЧрд╛ред
рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╕рд╣реА рдбрд┐рдЬрд╝рд╛рдЗрди рдХреЗ рд╕рд╛рде, рдпрд╣ рдПрдХ рдмрд╛рд░ рдХрд╛ рдХрд╛рд░реНрдп рд╣реИ, рдФрд░ рдлрд┐рд░ рд╕рдорд╛рди рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЛ рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ (рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╡рд┐рднрд┐рдиреНрди рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рднреА) рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдмрд╕ рдХреБрдЫ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдХреЗ рдЙрдиреНрд╣реЗрдВ рдареАрдХ рд╕реЗ рдЯреНрдпреВрдирд┐рдВрдЧ рдХрд░рдХреЗред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдкрд░реАрдХреНрд╖рдг рдХреЛрдб рд╕реНрд╡рдпрдВ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ, рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ рд╣рдо рд╕рднреА рднреВрд╕реА рдХреЛ рдкрд░реНрдпрд╛рд╡рд░рдг рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд╛рд▓рддреЗ рд╣реИрдВред
рдЗрд╕ рдЫреЛрдЯреЗ рд╕реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдЬрд╝реЗрдирдореИрди рдХреА рд╕рднреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рд╕реЗ рджреВрд░ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдПрдХ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддреГрдд рдЪрд░рдг-рджрд░-рдЪрд░рдг рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛ рдпрд╣рд╛рдВ рдЙрдкрд▓рдмреНрдз рд╣реИред
рдЧреНрд░рд╛рд╣рдХреЛрдВ
рд╡рд░реНрддрдорд╛рди рдореЗрдВ рджреЛ рднрд╛рд╖рд╛рдУрдВ рдХреЗ рдЧреНрд░рд╛рд╣рдХ рд╣реИрдВ:
рдЬрд╛рдУ
рдЕрдЬрдЧрд░
рд▓реЗрдХрд┐рди рдирдП рдЬреЛрдбрд╝рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рдПрдкреАрдЖрдИ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИред
рд╡реЗрдм рдЗрдВрдЯрд░рдлрд╝реЗрд╕
2.0.0 рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рдПрдХ рд╕рд░рд▓ рд╡реЗрдм рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдЖрдк рдЕрдкрдиреЗ рд╡рд╛рддрд╛рд╡рд░рдг рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрдкрд▓рдмреНрдз рдЯреЗрдореНрдкрд▓реЗрдЯ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред



Xenvman рдбреЙрдХрдЯрд░-рдХрдВрдкреЛрдЬрд╝ рд╕реЗ рдХреИрд╕реЗ рдЕрд▓рдЧ рд╣реИ?
рдмреЗрд╢рдХ, рдмрд╣реБрдд рд╕рд╛рд░реА рд╕рдорд╛рдирддрд╛рдПрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕реНрдЯреЗрдЯрд┐рдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ, рдЬрд╝реЗрдирд╡рдореИрди рдореБрдЭреЗ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рд▓рдЪреАрд▓рд╛ рдФрд░ рдЧрддрд┐рд╢реАрд▓ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд▓рдЧрддрд╛ рд╣реИред
рдпрд╣рд╛рдБ рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдореБрдЦреНрдп рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВ:
- HTTP API рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирд┐рдпрдВрддреНрд░рдг рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо HTTP рдХреЛ рд╕рдордЭрдиреЗ рд╡рд╛рд▓реА рдХрд┐рд╕реА рднреА рднрд╛рд╖рд╛ рдХреЗ рдХреЛрдб рд╕реЗ рд╡рд╛рддрд╛рд╡рд░рдг рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ
- рдЪреВрдБрдХрд┐ xenvman рдХреЛ рдПрдХ рдЕрд▓рдЧ рд╣реЛрд╕реНрдЯ рдкрд░ рдЪрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╣рдо рдЗрд╕рдХреА рд╕рднреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХ рд╣реЛрд╕реНрдЯ рд╕реЗ рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕ рдкрд░ docker рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рд╣реИред
- рдордХреНрдЦреА рдкрд░ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдЪрд┐рддреНрд░ рдмрдирд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛
- рдЕрдкрдиреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рджреМрд░рд╛рди рдкрд░реНрдпрд╛рд╡рд░рдг рдХреА рд╕рдВрд░рдЪрдирд╛ (рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛ / рд░реЛрдХрдирд╛) рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдХреНрд╖рдорддрд╛
- рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреЛрдб, рдмреЗрд╣рддрд░ рд░рдЪрдирд╛ рдФрд░ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛрдбрд┐рдВрдЧ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛрдб рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдореЗрдВ рдХрдореА
рд╕рдВрджрд░реНрдн
рдЧрд┐рдердм рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкреЗрдЬ
рд╡рд┐рд╕реНрддреГрдд рдЪрд░рдг-рджрд░-рдЪрд░рдг рдЙрджрд╛рд╣рд░рдг, рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВред
рдирд┐рд╖реНрдХрд░реНрд╖
рдмрд╕ рдЗрддрдирд╛ рд╣реАред рдирд┐рдХрдЯ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдореИрдВ рдЕрд╡рд╕рд░ рдЬреЛрдбрд╝рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВ
рдЯреЗрдореНрдкреНрд▓реЗрдЯ рд╕реЗ рдХреЙрд▓ рдХрд░реЗрдВ рдФрд░ рдЗрд╕ рддрд░рд╣ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдЕрдзрд┐рдХ рджрдХреНрд╖рддрд╛ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред
рдореИрдВ рдХрд┐рд╕реА рднреА рдкреНрд░рд╢реНрди рдХрд╛ рдЙрддреНрддрд░ рджреЗрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛, рдФрд░ рдореБрдЭреЗ рдЦреБрд╢реА рд╣реЛрдЧреА рдЕрдЧрд░ рдХреЛрдИ рдФрд░ рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдЙрдкрдпреЛрдЧреА рдкрд╛рддрд╛ рд╣реИред