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

рдЕрдм рдЖрдЗрдП рдЬрд╛рдиреЗрдВ рдХрд┐ рдЗрд╕ рдбреЙрдХрд░реАрдлрд╛рдЗрд▓ рдореЗрдВ рдХреНрдпрд╛ рдЧрд▓рдд рд╣реИред
рдЗрд╕рд▓рд┐рдП, рдПрдХ рд╕рдкреНрддрд╛рд╣ рдмреАрдд рдЪреБрдХрд╛ рд╣реИред
рджреЗрд╡ рдкреЗрдЯреНрдпрд╛ рдСрдкреНрд╕ рдЗрдЧреЛрд░ рдЗрд╡рд╛рдиреЛрд╡рд┐рдЪ рдХреЗ рд╕рд╛рде рдПрдХ рдХрдк рдХреЙрдлреА рдХреЗ рд╕рд╛рде рднреЛрдЬрди рдХрдХреНрд╖ рдореЗрдВ рдорд┐рд▓рддреЗ рд╣реИрдВред
P: рдЗрдЧреЛрд░ рдЗрд╡рд╛рдиреЛрд╡рд┐рдЪ, рдЖрдк рдмрд╣реБрдд рд╡реНрдпрд╕реНрдд рд╣реИрдВ? рдореИрдВ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ рд╣рдордиреЗ рдХрд╣рд╛рдВ-рдХрд╣рд╛рдВ рд╢рд┐рдХрдВрдЬрд╛ рдХрд╕рд╛ рд╣реИред
рдР: рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реИ, рдЖрдк рдЕрдХреНрд╕рд░ рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╕реЗ рдорд┐рд▓рддреЗ рд╣реИрдВ рдЬреЛ рдСрдкрд░реЗрд╢рди рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВред
рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рдХреБрдЫ рдмрд╛рддреЛрдВ рдкрд░ рд╕рд╣рдордд рд╣реЛрдВ:
- рдбреЙрдХрд░ рд╡рд┐рдЪрд╛рд░рдзрд╛рд░рд╛: рдПрдХ рдХрдВрдЯреЗрдирд░ - рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ред
- рдХрдВрдЯреЗрдирд░ рдЬрд┐рддрдирд╛ рдЫреЛрдЯрд╛ рд╣реЛрдЧрд╛, рдЙрддрдирд╛ рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛ред
- рдЬрд┐рддрдирд╛ рдХреИрд╢ рд▓рд┐рдпрд╛ рдЬрд╛рдП, рдЙрддрдирд╛ рдЕрдЪреНрдЫрд╛ред
P: рдФрд░ рдПрдХ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреНрдпреЛрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП?
рдПрдЖрдИ: рдбреЙрдХрдЯрд░, рдЬрдм рдХрдВрдЯреЗрдирд░ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рддрд╛ рд╣реИ рдкреАрдЖрдИрдбреА тАЛтАЛ1 рдХреЗ рд╕рд╛рдеред рдпрджрд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдорд░ рдЬрд╛рддреА рд╣реИ, рддреЛ рдбреЙрдХрд░ рдХрдВрдЯреЗрдирд░ рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЖрдкрдХреЗ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдХрдИ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЪрд▓ рд░рд╣реЗ рд╣реИрдВ рдпрд╛ рдореБрдЦреНрдп рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдкреАрдЖрдИрдбреА тАЛтАЛ1 рдХреЗ рд╕рд╛рде рд▓реЙрдиреНрдЪ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрджрд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдорд░ рдЬрд╛рддреА рд╣реИ, рддреЛ рдбреЙрдХрд░ рдХреЛ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рдирд╣реАрдВ рдЪрд▓реЗрдЧрд╛ред
рдпрджрд┐ рдХреЛрдИ рдФрд░ рдкреНрд░рд╢реНрди рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдЕрдкрдирд╛ рдбреЙрдХрд░рдлрд╛рдЗрд▓ рджрд┐рдЦрд╛рдПрдВред
рдФрд░ рдкреЗрдЯреНрдпрд╛ рдиреЗ рджрд┐рдЦрд╛рдпрд╛:
FROM ubuntu:latest # COPY ./ /app WORKDIR /app # RUN apt-get update # RUN apt-get upgrade # RUN apt-get -y install libpq-dev imagemagick gsfonts ruby-full ssh supervisor # bundler RUN gem install bundler # nodejs RUN curl -sL https://deb.nodesource.com/setup_9.x | sudo bash - RUN apt-get install -y nodejs # RUN bundle install --without development test --path vendor/bundle # RUN rm -rf /usr/local/bundle/cache/*.gem RUN apt-get clean RUN rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* RUN rake assets:precompile # , , . CMD ["/app/init.sh"]
AI: рдУрд╣, рдЪрд▓реЛ рдЗрд╕реЗ рдХреНрд░рдо рд╕реЗ рдмрд╛рд╣рд░ред рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ:
FROM ubuntu:latest
рдЖрдк latest
рдЯреИрдЧ рд▓реЗрддреЗ рд╣реИрдВред latest
рдЯреИрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдкрд░рд┐рдгрд╛рдо рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИред рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рдЫрд╡рд┐ рдЕрдиреБрд░рдХреНрд╖рдХ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХреА рдПрдХ рдЕрд▓рдЧ рд╕реВрдЪреА рдХреЗ рд╕рд╛рде рдЫрд╡рд┐ рдХрд╛ рдПрдХ рдирдпрд╛ рд╕рдВрд╕реНрдХрд░рдг рдмрдирд╛ рд░рд╣рд╛ рд╣реИ, рдЗрд╕ рдЫрд╡рд┐ рдХреЛ рдирд╡реАрдирддрдо рдЯреИрдЧ рдорд┐рд▓рддрд╛ рд╣реИред рдФрд░ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛, рдЖрдкрдХрд╛ рдХрдВрдЯреЗрдирд░ рдЗрдХрдЯреНрдард╛ рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИ, рдФрд░ рд╕рдмрд╕реЗ рдЦрд░рд╛рдм рд░реВрдк рд╕реЗ, рдЖрдк рдРрд╕реЗ рдХреАрдбрд╝реЗ рдкрдХрдбрд╝рддреЗ рд╣реИрдВ рдЬреЛ рдкрд╣рд▓реЗ рдореМрдЬреВрдж рдирд╣реАрдВ рдереЗред
рдЖрдк рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХреЗ рд╕рд╛рде рдкреВрд░реНрдг рдУрдПрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рдЫрд╡рд┐ рд▓реЗрддреЗ рд╣реИрдВ, рдЬреЛ рдХрдВрдЯреЗрдирд░ рдХреЛ рдлреБрд▓рд╛рддрд╛ рд╣реИред рдФрд░ рдЕрдзрд┐рдХ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░, рдЕрдзрд┐рдХ рдЫреЗрдж рдФрд░ рдХрдордЬреЛрд░рд┐рдпрд╛рдВред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬрд┐рддрдиреА рдмрдбрд╝реА рдЫрд╡рд┐ рд╣реЛрддреА рд╣реИ, рдЙрддрдиреА рд╣реА рдпрд╣ рдореЗрдЬрдмрд╛рди рдФрд░ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдкрд░ рдЬрдЧрд╣ рд▓реЗрддреА рд╣реИ (рдХреНрдпрд╛ рдЖрдк рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдХрд╣реАрдВ рд╕реНрдЯреЛрд░ рдХрд░рддреЗ рд╣реИрдВ)?
P: рд╣рд╛рдБ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рд╣реИ, рдФрд░ рдЖрдк рдЗрд╕реЗ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВред
II: рддреЛ, рдореИрдВ рдХрд┐рд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ? .. рдУрд╣ рд╣рд╛рдВ, рд╡реЙрд▓реНрдпреВрдо ... рдиреЗрдЯрд╡рд░реНрдХ рд▓реЛрдб рднреА рдмрдврд╝ рд░рд╣рд╛ рд╣реИред рдПрдХ рдПрдХрд▓ рдЫрд╡рд┐ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЕрджреГрд╢реНрдп рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдм рдирд┐рд░рдВрддрд░ рдЕрд╕реЗрдВрдмрд▓реА, рдкрд░реАрдХреНрд╖рдг рдФрд░ рддреИрдирд╛рддреА рд╣реЛрддреА рд╣реИ, рддреЛ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИред рдФрд░ рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ AWS рдкрд░ рднрдЧрд╡рд╛рди рдХреА рд╡рд┐рдзрд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдПрдХ рдЕрдВрддрд░рд┐рдХреНрд╖ рдЦрд╛рддрд╛ рднреА рдорд┐рд▓реЗрдЧрд╛ред
рдЗрд╕рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕рдЯреАрдХ рд╕рдВрд╕реНрдХрд░рдг рдФрд░ рдиреНрдпреВрдирддрдо рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХреЗ рд╕рд╛рде, рд╕рдмрд╕реЗ рдЙрдкрдпреБрдХреНрдд рдЫрд╡рд┐ рдЪреБрдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, FROM ruby:2.5.5-stretch
P: рдУрд╣, рдореИрдВ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдБред рдФрд░ рдХреИрд╕реЗ рдФрд░ рдХрд╣рд╛рдБ рдЙрдкрд▓рдмреНрдз рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП? рдХреИрд╕реЗ рд╕рдордЭреЗрдВ рдХрд┐ рдореБрдЭреЗ рдХрд┐рд╕рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ?
рдР: рдЖрдорддреМрд░ рдкрд░, рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдбреЙрдХрд╣рдм рд╕реЗ рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдкреЛрд░реНрдирд╣рдм рдХреЗ рд╕рд╛рде рднреНрд░рдорд┐рдд рди рдХрд░реЗрдВ :)ред рдЖрдорддреМрд░ рдкрд░ рдПрдХ рдЫрд╡рд┐ рдХреЗ рд▓рд┐рдП рдХрдИ рд╡рд┐рдзрд╛рдирд╕рднрд╛рдПрдВ рд╣реИрдВ:
рдЕрд▓реНрдкрд╛рдЗрди : рдЫрд╡рд┐рдпрд╛рдБ рдХреЗрд╡рд▓ 5 рдПрдордмреА рдХреА рдПрдХ рдиреНрдпреВрдирддрдо рд▓рд┐рдирдХреНрд╕ рдЫрд╡рд┐ рдкрд░ рд╕рдВрдХрд▓рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИрдВред рдЗрд╕рдХрд╛ рдорд╛рдЗрдирд╕: рдпрд╣ рд▓рд┐рдмреЗрдХ рдХреЗ рдЕрдкрдиреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рдореЗрдВ рдорд╛рдирдХ рдкреИрдХреЗрдЬ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рд╕рд╣реА рдкреИрдХреЗрдЬ рдвреВрдВрдврдиреЗ рдФрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдмрд╣реБрдд рд╕рдордп рд▓рдЧреЗрдЧрд╛ред
рд╕реНрдХреНрд░реИрдЪ : рдмреЗрд╕рд┐рдХ рдЗрдореЗрдЬ, рдЕрдиреНрдп рдЗрдореЗрдЬ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВред рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмрд╛рдЗрдирд░реА, рддреИрдпрд╛рд░ рдбреЗрдЯрд╛ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИред рдмрд╛рдЗрдирд░реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрджрд░реНрд╢, рдЬрд┐рд╕рдореЗрдВ рдЖрдкрдХреА рдЬрд╝рд░реВрд░рдд рдХреА рд╕рднреА рдЪреАрдЬрд╝реЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ рдЧреЛ-рдПрдкреНрд▓рд┐рдХреЗрд╢рдиред
рдЙрдмрдВрдЯреВ рдпрд╛ рдбреЗрдмрд┐рдпрди рдЬреИрд╕реЗ рдХрд┐рд╕реА рднреА рдУрдПрд╕ рдкрд░ рдЖрдзрд╛рд░рд┐рддред рдЦреИрд░, рдпрд╣рд╛рдБ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рд╕рдордЭрд╛рдиреЗ рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИред
II: рдЕрдм рд╣рдореЗрдВ рд╕рднреА рдЕрддрд┐рд░рд┐рдХреНрдд рд▓рдЧрд╛рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред рд╕рдВрдХреБрд▓ рдХреЛ рд╕рд╛рдлрд╝ рдХрд░реЗрдВ рдФрд░ рд╕рд╛рдлрд╝ рдХрд░реЗрдВред рдФрд░ рддреБрд░рдВрдд рдЖрдк рдЙрдкрдпреБрдХреНрдд-рдЕрдкрдЧреНрд░реЗрдб рдХреЛ рдлреЗрдВрдХ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдиреНрдпрдерд╛, рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЗ рд╕рд╛рде, рдореВрд▓ рдЫрд╡рд┐ рдХреЗ рдирд┐рд╢реНрдЪрд┐рдд рдЯреИрдЧ рдХреЗ рдмрд╛рд╡рдЬреВрдж, рд╡рд┐рднрд┐рдиреНрди рдЫрд╡рд┐рдпрд╛рдВ рдкреНрд░рд╛рдкреНрдд рдХреА рдЬрд╛рдПрдВрдЧреАред рдПрдХ рдЫрд╡рд┐ рдореЗрдВ рд╕рдВрдХреБрд▓ рдЕрджреНрдпрддрди рдХрд░рдирд╛ рдЕрдиреБрд░рдХреНрд╖рдХ рдХрд╛ рдХрд╛рд░реНрдп рд╣реИ, рдпрд╣ рдПрдХ рдЯреИрдЧ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд╕рд╛рде рд╣реИред
P: рд╣рд╛рдБ, рдореИрдВрдиреЗ рдЗрд╕реЗ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдпрд╣ рдЗрд╕ рддрд░рд╣ рдирд┐рдХрд▓рд╛:
WORKDIR /app COPY ./ /app RUN curl -sL https://deb.nodesource.com/setup_9.x | bash - \ && apt-get -y install libpq-dev imagemagick gsfonts ruby-full ssh supervisor nodejs \ && gem install bundler \ && bundle install --without development test --path vendor/bundle RUN rm -rf /usr/local/bundle/cache/*.gem \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
II: рдмреБрд░рд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдХреБрдЫ рд╣реИред рджреЗрдЦрд┐рдП, рдпрд╣ рд╣реИ рдХрдорд╛рди:
RUN rm -rf /usr/local/bundle/cache/*.gem \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
... рдЕрдВрддрд┐рдо рдЫрд╡рд┐ рд╕реЗ рдбреЗрдЯрд╛ рд╣рдЯрд╛рддрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдЗрд╕ рдбреЗрдЯрд╛ рдХреЗ рдмрд┐рдирд╛ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдкрд░рдд рдмрдирд╛рддрд╛ рд╣реИред рдареАрдХ рд╣реА рддреЛ рд╣реИ:
RUN curl -sL https://deb.nodesource.com/setup_9.x | bash - \ && apt-get -y install libpq-dev imagemagick gsfonts nodejs \ && gem install bundler \ && bundle install --without development test --path vendor/bundle \ && rm -rf /usr/local/bundle/cache/*.gem \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
рд▓реЗрдХрд┐рди рд╡рд╣ рд╕рдм рдирд╣реАрдВ рд╣реИред рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреНрдпрд╛ рд╣реИ, рд░реВрдмреА? рдлрд┐рд░ рд╢реБрд░реБрдЖрдд рдореЗрдВ рдкреВрд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдХреЙрдкреА рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред рдмрд╕ Gemfile рдФрд░ Gemfile.lock рдХреЛ рдХреЙрдкреА рдХрд░реЗрдВред
рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде, рд╕реНрд░реЛрдд рдореЗрдВ рд╣рд░ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд▓рд┐рдП рдмрдВрдбрд▓ рдЗрдВрд╕реНрдЯреЙрд▓ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдЕрдЧрд░ Gemfile рдпрд╛ Gemfile.lock рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рдПред
рдирд┐рд░реНрднрд░рддрд╛ рдкреНрд░рдмрдВрдзрдХ рдХреЗ рд╕рд╛рде рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рд╡рд┐рдзрд┐рдпрд╛рдВ рдХрд╛рдо рдХрд░рддреА рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ рдПрдирдкреАрдПрдо, рдкрд╛рдЗрдк, рдХрдВрдкреЛрдЬрд░ рдФрд░ рдЕрдиреНрдп рдирд┐рд░реНрднрд░рддрд╛ рдХреА рд╕реВрдЪреА рдХреЗ рд╕рд╛рде рдлрд╛рдЗрд▓ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ред
рдФрд░ рдЕрдВрдд рдореЗрдВ, рдпрд╛рдж рд░рдЦреЗрдВ, рд╢реБрд░реБрдЖрдд рдореЗрдВ рдореИрдВрдиреЗ рдбреЙрдХрд░ рд╡рд┐рдЪрд╛рд░рдзрд╛рд░рд╛ "рдПрдХ рдХрдВрдЯреЗрдирд░ - рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛" рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХреА рдереА? рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдПрдХ рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХ рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИред рд╕рд╛рде рд╣реА, рдЙрдиреНрд╣реАрдВ рдХрд╛рд░рдгреЛрдВ рд╕реЗ рд╕рд┐рд╕реНрдЯрдордб рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рди рдХрд░реЗрдВред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдбреЙрдХрд░ рдЦреБрдж рдПрдХ рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХ рд╣реИрдВред рдФрд░ рдЬрдм рдЖрдк рдЗрд╕рдореЗрдВ рдХрдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдБ рдЪрд▓рд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдПрдХ рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдХрдИ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдЬреИрд╕рд╛ рд╣реИред
рд╕рдВрдпреЛрдЬрди рдХрд░рддреЗ рд╕рдордп, рдЖрдк рдПрдХ рдПрдХрд▓ рдЫрд╡рд┐ рдмрдирд╛рдПрдВрдЧреЗ, рдФрд░ рдлрд┐рд░ рд╡рд╛рдВрдЫрд┐рдд рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдХрдВрдЯреЗрдирд░ рдЪрд▓рд╛рдПрдВрдЧреЗ рддрд╛рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реЛред
рд▓реЗрдХрд┐рди рдЙрд╕ рдкрд░ рдФрд░ рдмрд╛рдж рдореЗрдВред
P: рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рд▓рдЧрддрд╛ рд╣реИред рджреЗрдЦреЗрдВ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ:
FROM ruby:2.5.5-stretch WORKDIR /app COPY Gemfile* /app RUN curl -sL https://deb.nodesource.com/setup_9.x | bash - \ && apt-get -y install libpq-dev imagemagick gsfonts nodejs \ && gem install bundler \ && bundle install --without development test --path vendor/bundle \ && rm -rf /usr/local/bundle/cache/*.gem \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* COPY . /app RUN rake assets:precompile CMD ["bundleтАЭ, тАЬexecтАЭ, тАЬpassengerтАЭ, тАЬstart"]
рдХрдВрдЯреЗрдирд░ рд╢реБрд░реВ рд╣реЛрдиреЗ рдкрд░ рдбреЗрдореЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛?
AI: рд╣рд╛рдБ, рдпрд╣ рд╕рд╣реА рд╣реИред рд╡реИрд╕реЗ, рдЖрдк CMD рдФрд░ ENTRYPOINT рджреЛрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдФрд░ рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рдЕрдВрддрд░ рд╣реИ, рдпрд╣ рдЖрдкрдХрд╛ рд╣реЛрдорд╡рд░реНрдХ рд╣реИред рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рд╣реИрдмреЗ рдореЗрдВ рдПрдХ рдЕрдЪреНрдЫрд╛ рд▓реЗрдЦ рд╣реИ ред
рддреЛ рдЪрд▓реЛред рдЖрдк рдиреЛрдб рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝рд╛рдЗрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреА рдХреЛрдИ рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рд╕рддреНрдпрд╛рдкрди рдЬреЛрдбрд╝рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣:
RUN curl -sL https://deb.nodesource.com/setup_9.x > setup_9.x \ && echo "958c9a95c4974c918dca773edf6d18b1d1a41434 setup_9.x" | sha1sum -c - \ && bash setup_9.x \ && rm -rf setup_9.x \ && apt-get -y install libpq-dev imagemagick gsfonts nodejs \ && gem install bundler \ && bundle install --without development test --path vendor/bundle \ && rm -rf /usr/local/bundle/cache/*.gem \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
рдЪреЗрдХрд╕рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдпрд╣ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдиреЗ рд╕рд╣реА рдлрд╝рд╛рдЗрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХреА рд╣реИред
P: рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдлрд╝рд╛рдЗрд▓ рдмрджрд▓ рдЬрд╛рддреА рд╣реИ, рддреЛ рдЕрд╕реЗрдВрдмрд▓реА рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧреАред
II: рд╣рд╛рдВ, рдФрд░ рдЕрдЬреАрдм рддрд░рд╣ рд╕реЗ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рдпрд╣ рднреА рдПрдХ рдкреНрд▓рд╕ рд╣реИред рдЖрдкрдХреЛ рдкрддрд╛ рдЪрд▓реЗрдЧрд╛ рдХрд┐ рдлрд╝рд╛рдЗрд▓ рдмрджрд▓ рдЧрдИ рд╣реИ, рдФрд░ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╡рд╣рд╛рдБ рдХреНрдпрд╛ рдмрджрд▓рд╛ рдЧрдпрд╛ рдерд╛ред рдЖрдк рдХрднреА рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ, рдЙрдиреНрд╣реЛрдВрдиреЗ рдХрд╣рд╛, рдПрдХ рдРрд╕реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ, рдЬреЛ рдПрдХ рдРрд╕реА рдЪреАрдЬ рдХреЛ рд╣рдЯрд╛рддреА рд╣реИ рдЬреЛ рдЙрд╕ рддрдХ рдкрд╣реБрдВрдЪрддреА рд╣реИ, рдпрд╛ рдПрдХ рдкрд┐рдЫрд▓реЗ рджрд░рд╡рд╛рдЬреЗ рд╕реЗ рдХрд░рддреА рд╣реИред
P: рдзрдиреНрдпрд╡рд╛рджред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдЕрдВрддрд┐рдо рдбреЙрдХрд░рдлрд╛рдЗрд▓ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛:
FROM ruby:2.5.5-stretch WORKDIR /app COPY Gemfile* /app RUN curl -sL https://deb.nodesource.com/setup_9.x > setup_9.x \ && echo "958c9a95c4974c918dca773edf6d18b1d1a41434 setup_9.x" | sha1sum -c - \ && bash setup_9.x \ && rm -rf setup_9.x \ && apt-get -y install libpq-dev imagemagick gsfonts nodejs \ && gem install bundler \ && bundle install --without development test --path vendor/bundle \ && rm -rf /usr/local/bundle/cache/*.gem \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* COPY . /app RUN rake assets:precompile CMD ["bundleтАЭ, тАЬexecтАЭ, тАЬpassengerтАЭ, тАЬstart"]
рдкреА: рдЗрдЧреЛрд░ рдЗрд╡рд╛рдиреЛрд╡рд┐рдЪ, рдорджрдж рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореЗрд░реЗ рдЪрд▓рдиреЗ рдХрд╛ рд╕рдордп рд╣реИ, рдореБрдЭреЗ рдЖрдЬ рдХреЗ рд▓рд┐рдП 10 рдФрд░ рдХрдорд┐рдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдЗрдЧреЛрд░ рдЗрд╡рд╛рдиреЛрд╡рд┐рдЪ, рдПрдХ рдирдЬрд╝рд░ рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рдЬрд▓реНрджрдмрд╛рдЬреА рд╡рд╛рд▓реЗ рд╕рд╣рдпреЛрдЧреА рдХреЛ рд░реЛрдХрддреЗ рд╣реБрдП, рдордЬрдмреВрдд рдХреЙрдлреА рдХрд╛ рдПрдХ рдШреВрдВрдЯ рд▓реЗрддреЗ рд╣реИрдВред 99.9% SLA рдФрд░ рдмрдЧреНрд╕ рдХреЗ рдмрд┐рдирд╛ рдХреЛрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд╕реЗрдХрдВрдб рд╕реЛрдЪрдиреЗ рдХреЗ рдмрд╛рдж, рд╡рд╣ рдПрдХ рдкреНрд░рд╢реНрди рдкреВрдЫрддрд╛ рд╣реИред
AI: рдФрд░ рдЖрдк рд▓реЙрдЧреНрд╕ рдХрд╣рд╛рдБ рд░рдЦрддреЗ рд╣реИрдВ?
P: рдмреЗрд╢рдХ, production.log рдореЗрдВред рд╡реИрд╕реЗ, рд╣рд╛рдБ, рд╣рдо рдЙрдиреНрд╣реЗрдВ ssh рдХреЗ рдмрд┐рдирд╛ рдХреИрд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?
II: рдпрджрд┐ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╛рдзрд╛рди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЦреЛрдЬрд╛ рдЬрд╛ рдЪреБрдХрд╛ рд╣реИред Docker exec рдХрдорд╛рдВрдб рдЖрдкрдХреЛ рдХрд┐рд╕реА рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдХрд┐рд╕реА рднреА рдХрдорд╛рдВрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рд▓реЙрдЧ рдХреЗ рд▓рд┐рдП рдмрд┐рд▓реНрд▓реА рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдФрд░ -it рд╕реНрд╡рд┐рдЪ рдФрд░ рд░рдирд┐рдВрдЧ рдмреИрд╢ (рдпрджрд┐ рдпрд╣ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рд╣реИ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдкрдХреЛ рдХрдВрдЯреЗрдирд░ рддрдХ рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рдкрд╣реБрдВрдЪ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧреАред
рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рд▓реЙрдЧ рд╕реНрдЯреЛрд░ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдХрдо рд╕реЗ рдХрдо, рдпрд╣ рдХрдВрдЯреЗрдирд░ рдХреЗ рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд рд╡рд┐рдХрд╛рд╕ рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЛрдИ рднреА рд▓реЙрдЧ рдХреЛ рдШреБрдорд╛рддрд╛ рдирд╣реАрдВ рд╣реИред рд╕рднреА рд▓реЙрдЧ рдХреЛ рд╕реНрдЯрдбрдЖрдЙрдЯ рдореЗрдВ рдлреЗрдВрдХрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╡рд╣рд╛рдВ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрдиреНрд╣реЗрдВ рдбреЙрдХ рд▓реЙрдЧ рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред
P: рдЗрдЧреЛрд░ рдЗрд╡рд╛рдиреЛрд╡рд┐рдЪ, рд▓реЗрдХрд┐рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдбреЗрдЯрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЙрдЧ рдХреЛ рднреМрддрд┐рдХ рдиреЛрдб рдкрд░ рдорд╛рдЙрдВрдЯреЗрдб рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рдбрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ?
AI: рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реИ рдХрд┐ рдЖрдк рдиреЛрдб рдбрд┐рд╕реНрдХ рдкрд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛ рдХреЛ рдирд┐рдХрд╛рд▓рдирд╛ рдирд╣реАрдВ рднреВрд▓реЗрдВрдЧреЗред рд▓реЙрдЧ рдХреЗ рд╕рд╛рде, рдпрд╣ рднреА рд╕рдВрднрд╡ рд╣реИ, рдмрд╕ рд░реЛрдЯреЗрд╢рди рд╕реЗрдЯ рдХрд░рдирд╛ рдпрд╛рдж рд░рдЦреЗрдВред
рд╕рдм рдЖрдк рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред
P: рдЗрдЧреЛрд░ рдЗрд╡рд╛рдиреЛрд╡рд┐рдЪ, рд▓реЗрдХрд┐рди рд╕рд▓рд╛рд╣ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдкрдврд╝рдирд╛ рд╣реИ?
рдПрдЖрдИ: рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдбреЙрдХрд░ рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╕реЗ рд╕рд┐рдлрд╛рд░рд┐рд╢реЛрдВ рдХреЛ рдкрдврд╝реЗрдВ, рд╢рд╛рдпрдж рд╣реА рдХреЛрдИ рдбреЙрдХрдЯрд░ рдХреЛ рдЙрдирд╕реЗ рдмреЗрд╣рддрд░ рдЬрд╛рдирддрд╛ рд╣реЛред
рдФрд░ рдЕрдЧрд░ рдЖрдк рдЕрднреНрдпрд╛рд╕ рд╕реЗ рдЧреБрдЬрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЧрд╣рдирддрд╛ рд╕реЗ рдЬрд╛рдПрдВ ред рдЖрдЦрд┐рд░рдХрд╛рд░, рдЕрднреНрдпрд╛рд╕ рдХреЗ рдмрд┐рдирд╛ рдПрдХ рд╕рд┐рджреНрдзрд╛рдВрдд рдорд░ рдЪреБрдХрд╛ рд╣реИред