рдкреНрд░рддреНрдпреЗрдХ рдХреЗрд╣реА рд╡рд░реНрд╖рдорд╛, рд╕рдлреНрдЯрд╡реЗрдпрд░ рд╡рд┐рдХрд╛рд╕ рдЙрджреНрдпреЛрдЧрд▓реЗ рдПрдХ рдкреНрд░рддрд┐рдорд╛рди рдкрд░рд┐рд╡рд░реНрддрдирдмрд╛рдЯ рдЧреБрдЬреНрд░рд┐рд░рд╣реЗрдХреЛ рдЫред рдпреА рдордзреНрдпреЗ рдПрдХ рдШрдЯрдирд╛рд▓рд╛рдИ рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрднрд┐рд╕реЗрд╕рдХреЛ рдЕрд╡рдзрд╛рд░рдгрд╛рдорд╛ рдмрдвреНрджреЛ рдЪрд╛рд╕реЛрдХреЛ рд░реВрдкрдорд╛ рдорд╛рдиреНрдпрддрд╛ рджрд┐рди рд╕рдХрд┐рдиреНрдЫред рдпрджреНрдпрдкрд┐ рдорд╛рдЗрдХреНрд░реЛрд╕реЗрд╡рд╛рд╣рд░реВ рд╕рдмреИрднрдиреНрджрд╛ рдирдпрд╛рдБ рдкреНрд░рд╡рд┐рдзрд┐ рд╣реЛрдЗрди, рднрд░реНрдЦрд░реИ рдпрд╕рдХреЛ рд▓реЛрдХрдкреНрд░рд┐рдпрддрд╛ рд╢рд╛рдмреНрджрд┐рдХ рд░реВрдкрдорд╛ рдЖрдХрд╛рд╢ рдЫред
рдареВрд▓рд╛ рдореЛрдиреЛрд▓рд┐рдерд┐рдХ рд╕реЗрд╡рд╛рд╣рд░реВ рдЕрдм рд╕реНрд╡рддрдиреНрддреНрд░, рд╕реНрд╡рд╛рдпрддреНрдд рд▓рдШреБ рд╕реЗрд╡рд╛рд╣рд░реВрджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рднрдЗрд░рд╣реЗрдХрд╛ рдЫрдиреНред рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрднрд┐рд╕рд▓рд╛рдИ рдПрдЙрдЯреИ рдПрдкреНрд▓рд┐рдХреЗрд╕рдирдХреЛ рд░реВрдкрдорд╛ рд╕реЛрдЪреНрди рд╕рдХрд┐рдиреНрдЫ рдЬрд╕рд▓реЗ рдПрдХрд▓ рд░ рдзреЗрд░реИ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрджреНрджреЗрд╢реНрдп рдкреВрд░рд╛ рдЧрд░реНрджрдЫред рдЙрджрд╛рд╣рд░рдг рдХреЛ рд▓рд╛рдЧреА, рдпреЛ рдПрдХ рд░рд┐рд▓реЗрд╢рдирд▓ DBMS, рдПрдХ рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдЕрдиреБрдкреНрд░рдпреЛрдЧ, рдПрдХ Solr рд╕реЗрд╡рд╛ рд╣реБрди рд╕рдХреНрдЫред
рдЖрдЬрдХрд▓, рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрднрд┐рд╕реЗрд╕рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдирдЧрд░реА рдирдпрд╛рдБ рд╕рдлреНрдЯрд╡реЗрдпрд░ рдкреНрд░рдгрд╛рд▓реА рд╡рд┐рдХрд╛рд╕ рдЧрд░реНрдиреЗ рдХрд▓реНрдкрдирд╛ рдЧрд░реНрди рдЧрд╛рд╣реНрд░реЛ рдЫред рд░ рдпреЛ рдЕрд╡рд╕реНрдерд╛, рдмрд╛рд░реАрдорд╛, рд╣рд╛рдореАрд▓рд╛рдИ рдбрдХрд░ рдкреНрд▓реЗрдЯрдлрд░реНрдордорд╛ рд▓реИрдЬрд╛рдиреНрдЫред
рдбрдХрд░
рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдо
рдбрдХрд░ рд░рдЪрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН
рдкреНрд░рд╡рд┐рдзрд┐
рдбрдХрд░ рдХрдореНрдкреЛрдЬрд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрджрд╛, рдПрдкреНрд▓рд┐рдХреЗрд╕рди рд╕реЗрд╡рд╛рд╣рд░реВ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрди рд░ рдПрдХрдЕрд░реНрдХрд╛рд╕рдБрдЧ рдЙрдиреАрд╣рд░реВрдХреЛ рдЕрдиреНрддрд░рдХреНрд░рд┐рдпрд╛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдЧрд░реНрди YAML рдлрд╛рдЗрд▓ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫред рдбрдХрд░ рдХрдореНрдкреЛрдЬ рдпрд╕реИрд▓реЗ рдмрд╣реБ-рдХрдиреНрдЯреЗрдирд░ рдбрдХрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ рд╡рд░реНрдгрди рдЧрд░реНрди рд░ рдЪрд▓рд╛рдЙрдирдХреЛ рд▓рд╛рдЧрд┐ рдПрдЙрдЯрд╛ рдЙрдкрдХрд░рдг рд╣реЛред
рд╣реЛрд╕реНрдЯ рдкреНрд░рдгрд╛рд▓реАрдорд╛ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рджреБрдИ рдХрдиреНрдЯреЗрдирд░рд╣рд░реВ
GNU рдмрдирд╛рдЙрдиреБрд╣реЛрд╕реН
рдХрд╛рд░реНрдпрдХреНрд░рдо make
, рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдкрдорд╛ рд╕реНрд░реЛрдд рдХреЛрдбрдмрд╛рдЯ рдХрд╛рд░реНрдпрдХреНрд░рдорд╣рд░реВ рд░ рдкреБрд╕реНрддрдХрд╛рд▓рдпрд╣рд░реВрдХреЛ рдирд┐рд░реНрдорд╛рдг рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рдПрдХ рдЙрдкрдХрд░рдг рд╣реЛред рд╕рд╛рдорд╛рдиреНрдп рдорд╛, рд╣рд╛рдореА рдпреЛ рднрдиреНрди рд╕рдХреНрдЫреМрдВ make
рдХреБрдиреИ рдкрдирд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдорд╛ рд▓рд╛рдЧреВ рд╣реБрдиреНрдЫ рдЬрд╕рдорд╛ рдХреЗрд╣реА рдЗрдирдкреБрдЯ рд╕рд╛рдордЧреНрд░реАрд╣рд░реВрд▓рд╛рдИ рдХреЗрд╣реА рдЖрдЙрдЯрдкреБрдЯ рдлрд╛рд░рдордорд╛, рдХреЗрд╣реА рд▓рдХреНрд╖реНрдпрдорд╛ рд░реВрдкрд╛рдиреНрддрд░рдг рдЧрд░реНрди рдордирдорд╛рдиреА рдЖрджреЗрд╢рд╣рд░реВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реНрдиреЗ рд╕рдорд╛рд╡реЗрд╢ рд╣реБрдиреНрдЫред рд╣рд╛рдореНрд░реЛ рдЕрд╡рд╕реНрдерд╛рдорд╛, рдЖрджреЗрд╢рд╣рд░реВ docker-compose
рдЕрдореВрд░реНрдд рд▓рдХреНрд╖реНрдпрд╣рд░реВрдорд╛ рд░реВрдкрд╛рдиреНрддрд░рдг рд╣реБрдиреЗрдЫ (
рдХрд╛рд░реНрдпрдХреНрд░рдо рдмрддрд╛рдЙрди make
рд╣рд╛рдореА рдпрд╕рдмрд╛рдЯ рдХреЗ рдЪрд╛рд╣рдиреНрдЫреМрдВ рднрдиреНрдиреЗ рдмрд╛рд░реЗ, рд╣рд╛рдореАрд▓рд╛рдИ рдлрд╛рдЗрд▓ рдЪрд╛рд╣рд┐рдиреНрдЫ Makefile
.
рд╣рд╛рдореНрд░реЛрдорд╛ Makefile
рдирд┐рдпрдорд┐рдд рдЖрджреЗрд╢рд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рд╣реБрдиреЗрдЫ docker
╨╕ docker-compose
, рдЬреБрди рдзреЗрд░реИ рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрди рдбрд┐рдЬрд╛рдЗрди рдЧрд░рд┐рдПрдХреЛ рд╣реЛред рдЕрд░реНрдерд╛рддреН, рд╣рд╛рдореА рдХрдиреНрдЯреЗрдирд░ рдЬрдореНрдорд╛ рдЧрд░реНрдиреЗ рдмрд╛рд░реЗ рдХреБрд░рд╛ рдЧрд░реНрджреИрдЫреМрдВ, рдпрд╕рд▓рд╛рдИ рд╕реБрд░реБ рдЧрд░реНрдиреЗ рдмрд╛рд░реЗ, рдпрд╕рд▓рд╛рдИ рд░реЛрдХреНрди, рдпрд╕рд▓рд╛рдИ рдкреБрди: рд╕реБрд░реБ рдЧрд░реНрдиреЗ, рдХрдиреНрдЯреЗрдирд░рдорд╛ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рд▓рдЧрдЗрди рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдЧрд░реНрдиреЗ рдмрд╛рд░реЗ, рдХрдиреНрдЯреЗрдирд░ рд▓рдЧрд╣рд░реВрд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрдиреЗ рдмрд╛рд░реЗ, рд░ рдЕрдиреНрдп рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрдиреЗ рдмрд╛рд░реЗред
рдбрдХрд░ рдХрдореНрдкреЛрдЬрдХреЛ рд▓рд╛рдЧрд┐ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдпреЛрдЧ рдХреЗрд╕рд╣рд░реВ
рдирд┐рдореНрди рдЕрд╡рдпрд╡рд╣рд░реВ рднрдПрдХреЛ рдирд┐рдпрдорд┐рдд рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧрдХреЛ рдХрд▓реНрдкрдирд╛ рдЧрд░реМрдВ:
- TimescaleDB рдбрд╛рдЯрд╛рдмреЗрд╕ (Postgres)ред
- Express.js рдЖрд╡реЗрджрдиред
- рдкрд┐рдВрдЧ (рдХреЗрд╡рд▓ рдПрдХ рдХрдиреНрдЯреЗрдирд░, рдХреЗрд╣рд┐ рд╡рд┐рд╢реЗрд╖ рдЧрд░реНрджреИрди)ред
рдпреЛ рдПрдкрд▓рд╛рдИ рей рдбрдХрд░ рдХрдиреНрдЯреЗрдирд░ рд░ рдПрдЙрдЯрд╛ рдлрд╛рдЗрд▓ рдЪрд╛рд╣рд┐рдиреНрдЫ docker-compose
, рдЬрд╕рдорд╛ рдпреА рдХрдиреНрдЯреЗрдирд░рд╣рд░реВ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдЧрд░реНрди рдирд┐рд░реНрджреЗрд╢рдирд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЫрдиреНред рдкреНрд░рддреНрдпреЗрдХ рдХрдиреНрдЯреЗрдирд░рдорд╛ рдлрд░рдХ рдЯрдЪрдкреЛрдЗрдиреНрдЯрд╣рд░реВ рд╣реБрдиреЗрдЫрдиреНред рдЙрджрд╛рд╣рд░рдг рдХреЛ рд▓рд╛рдЧреА, рдПрдХ рдХрдиреНрдЯреЗрдирд░ рд╕рдВрдЧ timescale
рддрд┐рдиреАрд╣рд░реВрд▓реЗ рдбрд╛рдЯрд╛рдмреЗрд╕рд╣рд░реВрд╕рдБрдЧ рдХрд╛рдо рдЧрд░реЗ рдЬрд╕реНрддреИ рд▓рдЧрднрдЧ рдЙрд╕реНрддреИ рдХрд╛рдо рдЧрд░реНрди рд╕рдореНрднрд╡ рд╣реБрдиреЗрдЫред рдЕрд░реНрдерд╛рддреН, рдпрд╕рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдирд┐рдореНрди рдХрд╛рд░реНрдпрд╣рд░реВ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫ:
- Postgres рд╢реЗрд▓рдорд╛ рд▓рдЧ рдЗрди рдЧрд░реНрджреИред
- рддрд╛рд▓рд┐рдХрд╛рдХреЛ рдЖрдпрд╛рдд рд░ рдирд┐рд░реНрдпрд╛рддред
- рд╕рд┐рд░реНрдЬрдирд╛
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
, рдпрд╕рд▓реЗ рд╕рд╣рдпреЛрдЧрд▓рд╛рдИ рд╕реБрд╡реНрдпрд╡рд╕реНрдерд┐рдд рдмрдирд╛рдЙрдБрдЫ рд░ рддреНрд░реБрдЯрд┐рд╣рд░реВрд▓рд╛рдИ рдХрдо рдЧрд░реНрдЫред
PS рд╣рд╛рдореНрд░реЛрдорд╛
рдкреНрд░рд┐рдп рдкрд╛рдардХрд╣рд░реБ! рддрдкрд╛рдЗрдБ рдХрд╕рд░реА рдбрдХрд░ рд░рдЪрдирд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЧрд░реНрдиреБрд╣реБрдиреНрдЫ?
рд╕реНрд░реЛрдд: www.habr.com