рд╣рд░ рдХреБрдЫ рд╡рд░реНрд╖реЛрдВ рдореЗрдВ, рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╡рд┐рдХрд╛рд╕ рдЙрджреНрдпреЛрдЧ рдПрдХ рдЖрджрд░реНрд╢ рдмрджрд▓рд╛рд╡ рд╕реЗ рдЧреБрдЬрд░рддрд╛ рд╣реИред рдЗрди рдШрдЯрдирд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕реЗрдЬ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдореЗрдВ рдмрдврд╝рддреА рд░реБрдЪрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╣рдЪрд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐ рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕реЗрдЬ рдирд╡реАрдирддрдо рддрдХрдиреАрдХ рдирд╣реАрдВ рд╣реИ, рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдЗрд╕рдХреА рд▓реЛрдХрдкреНрд░рд┐рдпрддрд╛ рд╕рдЪрдореБрдЪ рдЖрд╕рдорд╛рди рдЫреВ рдЧрдИ рд╣реИред
рдмрдбрд╝реА рдЕрдЦрдВрдб рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдЕрдм рд╕реНрд╡рддрдВрддреНрд░, рд╕реНрд╡рд╛рдпрддреНрдд рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕реЗрдЬ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдПрдХ рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕ рдХреЛ рдПрдХ рдРрд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЛрдЪрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдПрдХ рдПрдХрд▓ рдФрд░ рдмрд╣реБрдд рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрджреНрджреЗрд╢реНрдп рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рдПрдХ рд░рд┐рд▓реЗрд╢рдирд▓ рдбреАрдмреАрдПрдордПрд╕, рдПрдХ рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди, рдПрдХ рд╕реЛрд▓рд░ рд╕реЗрд╡рд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред
рдЗрди рджрд┐рдиреЛрдВ, рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕реЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рдПрдХ рдирдпрд╛ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╕рд┐рд╕реНрдЯрдо рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░рдирд╛ рдХрдард┐рди рд╣реИред рдФрд░ рдпрд╣ рд╕реНрдерд┐рддрд┐, рдмрджрд▓реЗ рдореЗрдВ, рд╣рдореЗрдВ рдбреЙрдХрд░ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреА рдУрд░ рд▓реЗ рдЬрд╛рддреА рд╣реИред
рдбрд╛рдХ рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗрд╡рд╛рд▓рд╛ рдордЬрд╝рджреВрд░
рдордВрдЪ
рдбреЙрдХрд░ рд▓рд┐рдЦреЗрдВ
╨в╨╡╤Е╨╜╨╛╨╗╨╛╨│╨╕╤П
рдбреЙрдХрд░ рдХрдВрдкреЛрдЬрд╝ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп, рдПрдХ YAML рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдФрд░ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рдЙрдирдХреА рдмрд╛рддрдЪреАрдд рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рдбреЙрдХрд░ рдХрдВрдкреЛрдЬрд╝ рдорд▓реНрдЯреА-рдХрдВрдЯреЗрдирд░ рдбреЙрдХрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдФрд░ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдХрд░рдг рд╣реИред
рдПрдХ рд╣реЛрд╕реНрдЯ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рджреЛ рдХрдВрдЯреЗрдирд░
GNU рдореЗрдХ
рдХрд╛рд░реНрдпрдХреНрд░рдо make
, рдореВрд▓ рд░реВрдк рд╕реЗ рд╕реНрд░реЛрдд рдХреЛрдб рд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдФрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдХрд░рдг рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░ рд╣рдо рдРрд╕рд╛ рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ make
рдХрд┐рд╕реА рднреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХреБрдЫ рдЗрдирдкреБрдЯ рд╕рд╛рдордЧреНрд░рд┐рдпреЛрдВ рдХреЛ рдХреБрдЫ рдЖрдЙрдЯрдкреБрдЯ рдлреЙрд░реНрдо рдореЗрдВ, рдХреБрдЫ рд▓рдХреНрд╖реНрдп рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдордирдорд╛рдиреЗ рдЖрджреЗрд╢реЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реЛрддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрджреЗрд╢ docker-compose
рдЕрдореВрд░реНрдд рд▓рдХреНрд╖реНрдпреЛрдВ рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ (
рдХрд╛рд░реНрдпрдХреНрд░рдо рдмрддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП make
рд╣рдо рдЗрд╕рд╕реЗ рдХреНрдпрд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ Makefile
.
рд╣рдорд╛рд░реЗ рдпрд╣рд╛рдВ Makefile
рдирд┐рдпрдорд┐рдд рдЖрджреЗрд╢ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВрдЧреЗ docker
╨╕ docker-compose
, рдЬреЛ рдХрдИ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдП рдЧрдП рд╣реИрдВред рдЕрд░реНрдерд╛рддреН, рд╣рдо рдПрдХ рдХрдВрдЯреЗрдирд░ рдХреЛ рдЕрд╕реЗрдВрдмрд▓ рдХрд░рдиреЗ, рдЗрд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ, рдЗрд╕реЗ рд░реЛрдХрдиреЗ, рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ, рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд▓реЙрдЧрд┐рди рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ, рдХрдВрдЯреЗрдирд░ рд▓реЙрдЧ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдФрд░ рдЕрдиреНрдп рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рдбреЙрдХрд░ рдХрдВрдкреЛрдЬрд╝ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ
рдЖрдЗрдП рдПрдХ рдирд┐рдпрдорд┐рдд рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдЬрд┐рд╕рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдШрдЯрдХ рд╣реЛрдВ:
- рдЯрд╛рдЗрдорд╕реНрдХреЗрд▓рдбреАрдмреА рдбреЗрдЯрд╛рдмреЗрд╕ (рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬ)ред
- рдПрдХреНрд╕рдкреНрд░реЗрд╕.рдЬреЗрдПрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рдиред
- рдкрд┐рдВрдЧ (рд╕рд┐рд░реНрдл рдПрдХ рдХрдВрдЯреЗрдирд░, рдХреБрдЫ рдЦрд╛рд╕ рдирд╣реАрдВ рдХрд░рддрд╛)ред
рдЗрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ 3 рдбреЙрдХрд░ рдХрдВрдЯреЗрдирд░ рдФрд░ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА docker-compose
, рдЬрд┐рд╕рдореЗрдВ рдЗрди рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджреЗрд╢ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЯрдЪрдкреНрд╡рд╛рдЗрдВрдЯ рд╣реЛрдВрдЧреЗред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдХрдВрдЯреЗрдирд░ рдХреЗ рд╕рд╛рде timescale
рдпрд╣ рд▓рдЧрднрдЧ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛ рдЬреИрд╕реЗ рд╡реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рдЕрд░реНрдерд╛рддреН, рдпрд╣ рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреНрд░рд┐рдпрд╛рдПрдВ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:
- рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬ рд╢реЗрд▓ рдореЗрдВ рд▓реЙрдЧ рдЗрди рдХрд░рдирд╛ред
- рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХрд╛ рдЖрдпрд╛рдд рдФрд░ рдирд┐рд░реНрдпрд╛рдд.
- рд╕реГрдЬрди
pg_dump
рдЯреЗрдмрд▓ рдпрд╛ рдбреЗрдЯрд╛рдмреЗрд╕.
Express.js рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрдВрдЯреЗрдирд░, expressjs
, рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреНрд╖рдорддрд╛рдПрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ:
- рд╕рд┐рд╕реНрдЯрдо рд▓реЙрдЧ рд╕реЗ рддрд╛рдЬрд╝рд╛ рдбреЗрдЯрд╛ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ред
- рдХреБрдЫ рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╢реЗрд▓ рдореЗрдВ рд▓реЙрдЧрд┐рди рдХрд░реЗрдВред
рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд
рдПрдХ рдмрд╛рд░ рдЬрдм рд╣рдо рдбреЙрдХрд░ рдХрдВрдкреЛрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рдмреАрдЪ рд╕рдВрдЪрд╛рд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд▓реЗрддреЗ рд╣реИрдВ, рддреЛ рдЙрди рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд░ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдЖ рдЬрд╛рддрд╛ рд╣реИред рдбреЙрдХрд░ рдХрдВрдкреЛрдЬрд╝ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рднреАрддрд░ рдПрдХ рдХрдорд╛рдВрдб рд╣реИ docker-compose
, рд╕рд╣рд╛рдпрдХ рд╡рд┐рдХрд▓реНрдк -f
, рдЬреЛ рдЖрдкрдХреЛ рдХрд┐рд╕реА рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ docker-compose.yml
.
рдЗрд╕ рд╡рд┐рдХрд▓реНрдк рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░реЗрдХреНрд╢рди рдХреЛ рдХреЗрд╡рд▓ рдЙрди рдХрдВрдЯреЗрдирд░реЛрдВ рддрдХ рд╕реАрдорд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рдирдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ docker-compose.yml
.
рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░реИрдХреНрд╢рди рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ docker-compose
. рдпрджрд┐ рд╣рдо рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рд╣рдореЗрдВ рд╢реЗрд▓ рдореЗрдВ рд▓реЙрдЧ рдЗрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ psql
, рддреЛ рд╕рдВрдмрдВрдзрд┐рдд рдЖрджреЗрд╢ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ:
docker-compose -f docker-compose.yml exec timescale psql -Upostgres
рд╡рд╣реА рдХрдорд╛рдВрдб рдЬрд┐рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ docker-compose
рдФрд░ docker
, рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ:
docker exec -it edp_timescale_1 psql -Upostgres
рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣рдореЗрд╢рд╛ рдмреЗрд╣рддрд░ рд╣реЛрддрд╛ рд╣реИ docker
, рдФрд░ рдЖрджреЗрд╢ docker-compose
, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рд╕реЗ рдХрдВрдЯреЗрдирд░ рдирд╛рдореЛрдВ рдХреЛ рдпрд╛рдж рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддреА рд╣реИред
рдЙрдкрд░реЛрдХреНрдд рджреЛрдиреЛрдВ рдЖрджреЗрд╢ рдЙрддрдиреЗ рдХрдард┐рди рдирд╣реАрдВ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рд╣рдордиреЗ рдлреЙрд░реНрдо рдореЗрдВ "рд░реИрдкрд░" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ Makefile
, рдЬреЛ рд╣рдореЗрдВ рд╕рд░рд▓ рдХрдорд╛рдВрдб рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рджреЗрдЧрд╛ рдФрд░ рд╕реНрд╡рдпрдВ рд╕рдорд╛рди рд▓рдВрдмреА рдХрдорд╛рдВрдб рдХреЛ рдХреЙрд▓ рдХрд░реЗрдЧрд╛, рдлрд┐рд░ рд╕рдорд╛рди рдкрд░рд┐рдгрд╛рдо рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ:
make db-shell
рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧ Makefile
рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ!
рдХрд╛рдордХрд╛рдЬреА рдЙрджрд╛рд╣рд░рдг
рдЙрдкрд░реЛрдХреНрдд рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЖрд░реЗрдЦ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдВрдЧреЗ docker-compose.yml
:
version: '3.3'
services:
api:
build: .
image: mywebimage:0.0.1
ports:
- 8080:8080
volumes:
- /app/node_modules/
depends_on:
- timescale
command: npm run dev
networks:
- webappnetwork
timescale:
image: timescale/timescaledb-postgis:latest-pg11
environment:
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
command: ["postgres", "-c", "log_statement=all", "-c", "log_destination=stderr"]
volumes:
- ./create_schema.sql:/docker-entrypoint-initdb.d/create_schema.sql
networks:
- webappnetwork
ping:
image: willfarrell/ping
environment:
HOSTNAME: "localhost"
TIMEOUT: 300
networks:
webappnetwork:
driver: bridge
рдбреЙрдХрд░ рдХрдВрдкреЛрдЬрд╝ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдФрд░ рдЙрд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░реИрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдВрдЧреЗ Makefile
:
THIS_FILE := $(lastword $(MAKEFILE_LIST))
.PHONY: help build up start down destroy stop restart logs logs-api ps login-timescale login-api db-shell
help:
make -pRrq -f $(THIS_FILE) : 2>/dev/null | awk -v RS= -F: '/^# File/,/^# Finished Make data base/ {if ($$1 !~ "^[#.]") {print $$1}}' | sort | egrep -v -e '^[^[:alnum:]]' -e '^$@$$'
build:
docker-compose -f docker-compose.yml build $(c)
up:
docker-compose -f docker-compose.yml up -d $(c)
start:
docker-compose -f docker-compose.yml start $(c)
down:
docker-compose -f docker-compose.yml down $(c)
destroy:
docker-compose -f docker-compose.yml down -v $(c)
stop:
docker-compose -f docker-compose.yml stop $(c)
restart:
docker-compose -f docker-compose.yml stop $(c)
docker-compose -f docker-compose.yml up -d $(c)
logs:
docker-compose -f docker-compose.yml logs --tail=100 -f $(c)
logs-api:
docker-compose -f docker-compose.yml logs --tail=100 -f api
ps:
docker-compose -f docker-compose.yml ps
login-timescale:
docker-compose -f docker-compose.yml exec timescale /bin/bash
login-api:
docker-compose -f docker-compose.yml exec api /bin/bash
db-shell:
docker-compose -f docker-compose.yml exec timescale psql -Upostgres
рдпрд╣рд╛рдВ рд╡рд░реНрдгрд┐рдд рдЕрдзрд┐рдХрд╛рдВрд╢ рдЖрджреЗрд╢ рд╕рднреА рдХрдВрдЯреЗрдирд░реЛрдВ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП c=
рдЖрдкрдХреЛ рдХрдорд╛рдВрдб рдХреЗ рджрд╛рдпрд░реЗ рдХреЛ рдПрдХ рдХрдВрдЯреЗрдирд░ рддрдХ рд╕реАрдорд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдХреЗ рдмрд╛рдж Makefile
рддреИрдпрд╛рд░ рд╣реИ, рдЖрдк рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
make help
- рдЙрдкрд▓рдмреНрдз рд╕рднреА рдЖрджреЗрд╢реЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдЬрд╛рд░реА рдХрд░рдирд╛make
.
рдЙрдкрд▓рдмреНрдз рдЖрджреЗрд╢реЛрдВ рдкрд░ рд╕рд╣рд╛рдпрддрд╛
make build
- рд╕реЗ рдПрдХ рдЫрд╡рд┐ рдХреЛ рдЕрд╕реЗрдВрдмрд▓ рдХрд░рдирд╛Dockerfile
. рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд╣рдордиреЗ рдореМрдЬреВрджрд╛ рдЫрд╡рд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛timescale
╨╕ping
. рд▓реЗрдХрд┐рди рдЫрд╡рд┐api
рд╣рдо рд╕реНрдерд╛рдиреАрдп рд╕реНрддрд░ рдкрд░ рд╕рдВрдЧреНрд░рд╣ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ. рдЗрд╕ рдЖрджреЗрд╢ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдареАрдХ рдпрд╣реА рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдбреЙрдХрд░ рдХрдВрдЯреЗрдирд░ рдХрд╛ рдирд┐рд░реНрдорд╛рдг
make start
- рд╕рднреА рдХрдВрдЯреЗрдирд░ рд▓реЙрдиреНрдЪ рдХрд░рдирд╛ред рдХреЗрд╡рд▓ рдПрдХ рдХрдВрдЯреЗрдирд░ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЬреИрд╕реЗ рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВmake start c=timescale
.
рдЯрд╛рдЗрдорд╕реНрдХреЗрд▓ рдХрдВрдЯреЗрдирд░ рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реИ
рдПрдХ рдкрд┐рдВрдЧ рдХрдВрдЯреЗрдирд░ рдЪрд▓рд╛рдирд╛
make login-timescale
- рдХрдВрдЯреЗрдирд░ рдХреЗ рдмреИрд╢ рд╕рддреНрд░ рдореЗрдВ рд▓реЙрдЧрд┐рди рдХрд░реЗрдВtimescale
.
рдЯрд╛рдЗрдорд╕реНрдХреЗрд▓ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдмреИрд╢ рдЪрд▓рд╛рдирд╛
make db-shell
- рдкреНрд░рд╡реЗрд╢ рджреНрд╡рд╛рд░psql
рдПрдХ рдХрдВрдЯреЗрдирд░ рдореЗрдВtimescale
рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╡рд┐рд░реБрджреНрдз SQL рдХреНрд╡реЗрд░реА рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
рдЯрд╛рдЗрдорд╕реНрдХреЗрд▓реНрдбрдмреА рдХрдВрдЯреЗрдирд░ рдореЗрдВ psql рдЪрд▓рд╛рдирд╛
make stop
- рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЛ рд░реЛрдХрдирд╛ред
рдПрдХ рдЯрд╛рдЗрдорд╕реНрдХреЗрд▓ рдХрдВрдЯреЗрдирд░ рдХреЛ рд░реЛрдХрдирд╛
make down
- рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЛ рд░реЛрдХрдирд╛ рдФрд░ рд╣рдЯрд╛рдирд╛ред рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрдВрдЯреЗрдирд░ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рд╡рд╛рдВрдЫрд┐рдд рдХрдВрдЯреЗрдирд░ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реБрдП рдЗрд╕ рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП -make down c=timescale
рдпрд╛make down c=api
.
рд╕рднреА рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЛ рд░реЛрдХрдирд╛ рдФрд░ рд╣рдЯрд╛рдирд╛
рдкрд░рд┐рдгрд╛рдо
рд╣рд╛рд▓рд╛рдБрдХрд┐ рдбреЙрдХрд░ рдХрдВрдкреЛрдЬрд╝ рд╣рдореЗрдВ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб рдХрд╛ рдПрдХ рд╕рдореГрджреНрдз рд╕реЗрдЯ рджреЗрддрд╛ рд╣реИ, рдХрднреА-рдХрднреА рдпреЗ рдХрдорд╛рдВрдб рд▓рдВрдмреЗ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдпрд╛рдж рд░рдЦрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдкреНрд░рдпреЛрдЧ рдХреА рд╡рд┐рдзрд┐ Makefile
рд╣рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рд╕рд╛рде рддреНрд╡рд░рд┐рдд рдФрд░ рдЖрд╕рд╛рди рдЗрдВрдЯрд░реИрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓реА docker-compose.yml
. рдЕрд░реНрдерд╛рддреН, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ:
- рдбреЗрд╡рд▓рдкрд░ рдХреЗрд╡рд▓ рд╡рд░реНрдгрд┐рдд рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░реИрдХреНрдЯ рдХрд░рддрд╛ рд╣реИ
docker-compose.yml
, рдЕрдиреНрдп рдЪрд▓ рд░рд╣реЗ рдХрдВрдЯреЗрдирд░реЛрдВ рджреНрд╡рд╛рд░рд╛ рдХрд╛рдо рдореЗрдВ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред - рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЬрдм рдХреЛрдИ рдирд┐рд╢реНрдЪрд┐рдд рдХрдорд╛рдВрдб рднреВрд▓ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЖрдк рдЙрд╕ рдХрдорд╛рдВрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
make help
рдФрд░ рдЙрдкрд▓рдмреНрдз рдЖрджреЗрд╢реЛрдВ рдкрд░ рд╕рд╣рд╛рдпрддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред - рдЖрдкрдХреЛ рдирд╡реАрдирддрдо рд▓реЙрдЧ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдБ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдпрд╛ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд▓реЙрдЧ рдЗрди рдХрд░рдиреЗ рдЬреИрд╕реЗ рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддрд░реНрдХреЛрдВ рдХреА рд▓рдВрдмреА рд╕реВрдЪреА рдпрд╛рдж рд░рдЦрдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬреИрд╕реЗ рдПрдХ рдЖрджреЗрд╢
docker-compose -f docker-compose.yml exec timescale psql -Upostgres
рдореЗрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИmake db-shell
. - рдлрд╝рд╛рдЗрд▓
Makefile
рдЬреИрд╕реЗ-рдЬреИрд╕реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдврд╝рддрд╛ рд╣реИ рдЖрдк рд▓рдЪреАрд▓реЗ рдврдВрдЧ рд╕реЗ рдЗрд╕реЗ рдЕрдкрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдбреЗрдЯрд╛рдмреЗрд╕ рдмреИрдХрдЕрдк рдмрдирд╛рдиреЗ рдпрд╛ рдХреЛрдИ рдЕрдиреНрдп рдХреНрд░рд┐рдпрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб рдЬреЛрдбрд╝рдирд╛ рдЖрд╕рд╛рди рд╣реИред - рдпрджрд┐ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреА рдПрдХ рдмрдбрд╝реА рдЯреАрдо рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИ
Makefile
, рдпрд╣ рд╕рд╣рдпреЛрдЧ рдХреЛ рд╕реБрд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИред
рдкреБрдирд╢реНрдЪ рд╣рдорд╛рд░реЗ рдпрд╣рд╛рдВ
рдкреНрд░рд┐рдп рдкрд╛рдардХреЛрдВ! рдЖрдк рдбреЙрдХрд░ рдХрдВрдкреЛрдЬрд╝ рдХреЛ рдХреИрд╕реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВ?
рд╕реНрд░реЛрдд: www.habr.com