āĻĄāĻ•āĻžāĻ°: āĻ–āĻžāĻ°āĻžāĻĒ āĻĒāĻ°āĻžāĻŽāĻ°ā§āĻļ āĻ¨āĻ¯āĻŧ

āĻ†āĻŽāĻžāĻ° āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§‡ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻĄāĻ•āĻžāĻ°: āĻ–āĻžāĻ°āĻžāĻĒ āĻĒāĻ°āĻžāĻŽāĻ°ā§āĻļ āĻ•ā§‡āĻ¨ āĻāĻŸāĻŋāĻ¤ā§‡ āĻŦāĻ°ā§āĻŖāĻŋāĻ¤ āĻĄāĻ•āĻžāĻ°āĻĢāĻžāĻ‡āĻ˛āĻŸāĻŋ āĻāĻ¤ āĻ­āĻ¯āĻŧāĻ™ā§āĻ•āĻ° āĻ›āĻŋāĻ˛ āĻ¤āĻž āĻŦā§āĻ¯āĻžāĻ–ā§āĻ¯āĻž āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ…āĻ¨ā§‡āĻ• āĻ…āĻ¨ā§āĻ°ā§‹āĻ§ āĻ›āĻŋāĻ˛āĨ¤

āĻ†āĻ—ā§‡āĻ° āĻĒāĻ°ā§āĻŦā§‡āĻ° āĻ¸āĻžāĻ°āĻ¸āĻ‚āĻ•ā§āĻˇā§‡āĻĒ: āĻĻā§āĻ‡āĻœāĻ¨ āĻŦāĻŋāĻ•āĻžāĻļāĻ•āĻžāĻ°ā§€ āĻāĻ•āĻŸāĻŋ āĻļāĻ•ā§āĻ¤ āĻ¸āĻŽāĻ¯āĻŧāĻ¸ā§€āĻŽāĻžāĻ° āĻ…āĻ§ā§€āĻ¨ā§‡ āĻāĻ•āĻŸāĻŋ āĻĄāĻ•āĻžāĻ°āĻĢāĻžāĻ‡āĻ˛ āĻ°āĻšāĻ¨āĻž āĻ•āĻ°ā§‡ā§ˇ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ¯āĻŧ, āĻ…āĻĒāĻ¸ āĻ‡āĻ—āĻ° āĻ‡āĻ­āĻžāĻ¨ā§‹āĻ­āĻŋāĻš āĻ¤āĻžāĻĻā§‡āĻ° āĻ•āĻžāĻ›ā§‡ āĻ†āĻ¸ā§‡āĨ¤ āĻĢāĻ˛āĻ¸ā§āĻŦāĻ°ā§‚āĻĒ āĻĄāĻ•āĻžāĻ°āĻĢāĻžāĻ‡āĻ˛ āĻāĻ¤āĻŸāĻžāĻ‡ āĻ–āĻžāĻ°āĻžāĻĒ āĻ¯ā§‡ AI āĻšāĻžāĻ°ā§āĻŸ āĻ…ā§āĻ¯āĻžāĻŸāĻžāĻ•ā§‡āĻ° āĻĻā§āĻŦāĻžāĻ°āĻĒā§āĻ°āĻžāĻ¨ā§āĻ¤ā§‡āĨ¤

āĻĄāĻ•āĻžāĻ°: āĻ–āĻžāĻ°āĻžāĻĒ āĻĒāĻ°āĻžāĻŽāĻ°ā§āĻļ āĻ¨āĻ¯āĻŧ

āĻāĻ–āĻ¨ āĻ†āĻ¸ā§āĻ¨ āĻāĻ‡ āĻĄāĻ•āĻžāĻ°āĻĢāĻžāĻ‡āĻ˛ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ•ā§€ āĻ­ā§āĻ˛ āĻ¤āĻž āĻ–ā§āĻāĻœā§‡ āĻŦā§‡āĻ° āĻ•āĻ°āĻž āĻ¯āĻžāĻ•āĨ¤

āĻ¤ā§‹, āĻāĻ• āĻ¸āĻĒā§āĻ¤āĻžāĻš āĻ•ā§‡āĻŸā§‡ āĻ—ā§‡āĻ›ā§‡āĨ¤

āĻĻā§‡āĻŦ āĻĒā§‡āĻŸāĻŋāĻ¯āĻŧāĻž āĻāĻ• āĻ•āĻžāĻĒ āĻ•āĻĢāĻŋāĻ° āĻ‰āĻĒāĻ° āĻĄāĻžāĻ‡āĻ¨āĻŋāĻ‚ āĻ°ā§āĻŽā§‡ āĻ…āĻĒāĻ¸ āĻ‡āĻ—āĻ° āĻ‡āĻ­āĻžāĻ¨ā§‹āĻ­āĻŋāĻšā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻĻā§‡āĻ–āĻž āĻ•āĻ°ā§‡āĻ¨āĨ¤

āĻĒāĻŋ: āĻ‡āĻ—āĻ° āĻ‡āĻ­āĻžāĻ¨ā§‹āĻ­āĻŋāĻš, āĻ†āĻĒāĻ¨āĻŋ āĻ•āĻŋ āĻ–ā§āĻŦ āĻŦā§āĻ¯āĻ¸ā§āĻ¤? āĻ†āĻŽāĻŋ āĻ–ā§āĻāĻœā§‡ āĻŦā§‡āĻ° āĻ•āĻ°āĻ¤ā§‡ āĻšāĻžāĻ‡ āĻ¯ā§‡ āĻ†āĻŽāĻ°āĻž āĻ•ā§‹āĻĨāĻžāĻ¯āĻŧ āĻ­ā§āĻ˛ āĻ•āĻ°ā§‡āĻ›āĻŋāĨ¤

AI: āĻāĻŸāĻž āĻ­āĻžāĻ˛, āĻ†āĻĒāĻ¨āĻŋ āĻĒā§āĻ°āĻžāĻ¯āĻŧāĻ‡ āĻĄā§‡āĻ­ā§‡āĻ˛āĻĒāĻžāĻ°āĻĻā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻĻā§‡āĻ–āĻž āĻ•āĻ°ā§‡āĻ¨ āĻ¨āĻž āĻ¯āĻžāĻ°āĻž āĻļā§‹āĻˇāĻŖā§‡ āĻ†āĻ—ā§āĻ°āĻšā§€āĨ¤
āĻĒā§āĻ°āĻĨāĻŽā§‡, āĻ†āĻ¸ā§āĻ¨ āĻ•āĻ¯āĻŧā§‡āĻ•āĻŸāĻŋ āĻŦāĻŋāĻˇāĻ¯āĻŧā§‡ āĻāĻ•āĻŽāĻ¤:

  1. āĻĄāĻ•āĻžāĻ° āĻŽāĻ¤āĻžāĻĻāĻ°ā§āĻļ: āĻāĻ• āĻ§āĻžāĻ°āĻ• - āĻāĻ• āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĨ¤
  2. āĻĒāĻžāĻ¤ā§āĻ° āĻ¯āĻ¤ āĻ›ā§‹āĻŸ āĻšāĻŦā§‡ āĻ¤āĻ¤ āĻ­āĻžāĻ˛ā§‹āĨ¤
  3. āĻ†āĻĒāĻ¨āĻŋ āĻ•ā§āĻ¯āĻžāĻļā§‡ āĻĨā§‡āĻ•ā§‡ āĻ¯āĻ¤ āĻŦā§‡āĻļāĻŋ āĻ¨ā§‡āĻŦā§‡āĻ¨, āĻ¤āĻ¤ āĻ­āĻžāĻ˛āĨ¤

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"]

āĻāĻ†āĻ‡: āĻ“āĻš, āĻ†āĻ¸ā§āĻ¨ āĻāĻŸāĻŋāĻ•ā§‡ āĻ•ā§āĻ°āĻŽā§‡ āĻ¨ā§‡āĻ“āĻ¯āĻŧāĻž āĻ¯āĻžāĻ•āĨ¤ āĻĒā§āĻ°āĻĨāĻŽ āĻ˛āĻžāĻ‡āĻ¨ āĻĻāĻŋāĻ¯āĻŧā§‡ āĻļā§āĻ°ā§ āĻ•āĻ°āĻž āĻ¯āĻžāĻ•:

FROM ubuntu:latest

āĻ†āĻĒāĻ¨āĻŋ āĻŸā§āĻ¯āĻžāĻ— āĻ¨āĻŋāĻ¨ latest. āĻāĻ•āĻŸāĻŋ āĻŸā§āĻ¯āĻžāĻ— āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ latest āĻ…āĻĒā§āĻ°āĻ¤ā§āĻ¯āĻžāĻļāĻŋāĻ¤ āĻĒāĻ°āĻŋāĻŖāĻ¤āĻŋāĻ° āĻĻāĻŋāĻ•ā§‡ āĻ¨āĻŋāĻ¯āĻŧā§‡ āĻ¯āĻžāĻ¯āĻŧāĨ¤ āĻ•āĻ˛ā§āĻĒāĻ¨āĻž āĻ•āĻ°ā§āĻ¨, āĻšāĻŋāĻ¤ā§āĻ° āĻ°āĻ•ā§āĻˇāĻŖāĻžāĻŦā§‡āĻ•ā§āĻˇāĻŖāĻ•āĻžāĻ°ā§€ āĻāĻ•āĻŸāĻŋ āĻ­āĻŋāĻ¨ā§āĻ¨ āĻ¸āĻĢā§āĻŸāĻ“āĻ¯āĻŧā§āĻ¯āĻžāĻ° āĻ¤āĻžāĻ˛āĻŋāĻ•āĻž āĻ¸āĻš āĻ›āĻŦāĻŋāĻ° āĻāĻ•āĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§‡, āĻāĻ‡ āĻšāĻŋāĻ¤ā§āĻ°āĻŸāĻŋ āĻ¸āĻ°ā§āĻŦāĻļā§‡āĻˇ āĻŸā§āĻ¯āĻžāĻ— āĻ—ā§āĻ°āĻšāĻŖ āĻ•āĻ°ā§‡āĨ¤ āĻāĻŦāĻ‚ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ§āĻžāĻ°āĻ•, āĻ¸āĻ°ā§āĻŦā§‹āĻ¤ā§āĻ¤āĻŽāĻ­āĻžāĻŦā§‡, āĻ¨āĻŋāĻ°ā§āĻŽāĻžāĻŖ āĻŦāĻ¨ā§āĻ§ āĻ•āĻ°ā§‡ āĻĻā§‡āĻ¯āĻŧ āĻāĻŦāĻ‚ āĻ¸āĻŦāĻšā§‡āĻ¯āĻŧā§‡ āĻ–āĻžāĻ°āĻžāĻĒāĻ­āĻžāĻŦā§‡, āĻ†āĻĒāĻ¨āĻŋ āĻāĻŽāĻ¨ āĻŦāĻžāĻ—āĻ—ā§āĻ˛āĻŋ āĻ§āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ āĻ¯āĻž āĻ†āĻ—ā§‡ āĻŦāĻŋāĻĻā§āĻ¯āĻŽāĻžāĻ¨ āĻ›āĻŋāĻ˛ āĻ¨āĻžāĨ¤

āĻ†āĻĒāĻ¨āĻŋ āĻĒā§āĻ°āĻšā§āĻ° āĻ…āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ā§€āĻ¯āĻŧ āĻ¸āĻĢā§āĻŸāĻ“āĻ¯āĻŧā§āĻ¯āĻžāĻ° āĻ¸āĻš āĻāĻ•āĻŸāĻŋ āĻĒā§‚āĻ°ā§āĻŖāĻžāĻ™ā§āĻ— OS āĻ¸āĻš āĻāĻ•āĻŸāĻŋ āĻšāĻŋāĻ¤ā§āĻ° āĻ¤ā§āĻ˛āĻ›ā§‡āĻ¨, āĻ¯āĻž āĻ§āĻžāĻ°āĻ•āĻŸāĻŋāĻ° āĻ­āĻ˛āĻŋāĻ‰āĻŽāĻ•ā§‡ āĻ¸ā§āĻĢā§€āĻ¤ āĻ•āĻ°ā§‡āĨ¤ āĻāĻŦāĻ‚ āĻ¯āĻ¤ āĻŦā§‡āĻļāĻŋ āĻ¸āĻĢā§āĻŸāĻ“āĻ¯āĻŧā§āĻ¯āĻžāĻ°, āĻ¤āĻ¤ āĻŦā§‡āĻļāĻŋ āĻ—āĻ°ā§āĻ¤ āĻāĻŦāĻ‚ āĻĻā§āĻ°ā§āĻŦāĻ˛āĻ¤āĻžāĨ¤

āĻ‰āĻĒāĻ°āĻ¨ā§āĻ¤ā§, āĻ›āĻŦāĻŋāĻŸāĻŋ āĻ¯āĻ¤ āĻŦāĻĄāĻŧ āĻšāĻŦā§‡, āĻšā§‹āĻ¸ā§āĻŸā§‡ āĻāĻŦāĻ‚ āĻ°ā§‡āĻœāĻŋāĻ¸ā§āĻŸā§āĻ°āĻŋāĻ¤ā§‡ āĻāĻŸāĻŋ āĻ¤āĻ¤ āĻŦā§‡āĻļāĻŋ āĻœāĻžāĻ¯āĻŧāĻ—āĻž āĻ¨ā§‡āĻ¯āĻŧ (āĻ†āĻĒāĻ¨āĻŋ āĻ•āĻŋ āĻ•ā§‹āĻĨāĻžāĻ“ āĻ›āĻŦāĻŋ āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŖ āĻ•āĻ°ā§‡āĻ¨)?

P: āĻšā§āĻ¯āĻžāĻ, āĻ…āĻŦāĻļā§āĻ¯āĻ‡, āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻ°ā§‡āĻœāĻŋāĻ¸ā§āĻŸā§āĻ°āĻŋ āĻ†āĻ›ā§‡, āĻ†āĻĒāĻ¨āĻŋ āĻāĻŸāĻŋ āĻ¸ā§‡āĻŸ āĻ†āĻĒ āĻ•āĻ°ā§āĻ¨āĨ¤

AI: āĻ¤āĻžāĻšāĻ˛ā§‡, āĻ†āĻŽāĻŋ āĻ•āĻŋāĻ¸ā§‡āĻ° āĻ•āĻĨāĻž āĻŦāĻ˛āĻ›āĻŋ?... āĻ“āĻš āĻšā§āĻ¯āĻžāĻ, āĻ­āĻ˛āĻŋāĻ‰āĻŽ... āĻ¨ā§‡āĻŸāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ•ā§‡āĻ° āĻ˛ā§‹āĻĄāĻ“ āĻŦāĻžāĻĄāĻŧāĻ›ā§‡āĨ¤ āĻāĻ•āĻŸāĻŋ āĻāĻ•āĻ• āĻšāĻŋāĻ¤ā§āĻ°ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻŸāĻŋ āĻ˛āĻ•ā§āĻˇāĻŖā§€āĻ¯āĻŧ āĻ¨āĻ¯āĻŧ, āĻ¤āĻŦā§‡ āĻ¯āĻ–āĻ¨ āĻāĻ•āĻŸāĻŋ āĻ…āĻŦāĻŋāĻšā§āĻ›āĻŋāĻ¨ā§āĻ¨ āĻŦāĻŋāĻ˛ā§āĻĄ, āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻāĻŦāĻ‚ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻž āĻĨāĻžāĻ•ā§‡, āĻ¤āĻ–āĻ¨ āĻāĻŸāĻŋ āĻ˛āĻ•ā§āĻˇāĻŖā§€āĻ¯āĻŧāĨ¤ āĻāĻŦāĻ‚ āĻ¯āĻĻāĻŋ āĻ†āĻĒāĻ¨āĻžāĻ° AWS-āĻ āĻˆāĻļā§āĻŦāĻ°ā§‡āĻ° āĻŽā§‹āĻĄ āĻ¨āĻž āĻĨāĻžāĻ•ā§‡, āĻ¤āĻžāĻšāĻ˛ā§‡ āĻ†āĻĒāĻ¨āĻŋ āĻāĻ•āĻŸāĻŋ āĻŽāĻšāĻžāĻœāĻžāĻ—āĻ¤āĻŋāĻ• āĻŦāĻŋāĻ˛āĻ“ āĻĒāĻžāĻŦā§‡āĻ¨āĨ¤

āĻ…āĻ¤āĻāĻŦ, āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ¸āĻ āĻŋāĻ• āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖ āĻāĻŦāĻ‚ āĻ¸āĻ°ā§āĻŦāĻ¨āĻŋāĻŽā§āĻ¨ āĻ¸āĻĢā§āĻŸāĻ“āĻ¯āĻŧā§āĻ¯āĻžāĻ° āĻ¸āĻš āĻ¸āĻŦāĻšā§‡āĻ¯āĻŧā§‡ āĻ‰āĻĒāĻ¯ā§āĻ•ā§āĻ¤ āĻšāĻŋāĻ¤ā§āĻ° āĻšāĻ¯āĻŧāĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡āĨ¤ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, āĻ¨āĻŋāĻ¨: FROM ruby:2.5.5-stretch

P: āĻ“āĻš, āĻ†āĻŽāĻŋ āĻĻā§‡āĻ–āĻ¤ā§‡ āĻĒāĻžāĻšā§āĻ›āĻŋāĨ¤ āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻāĻŦāĻ‚ āĻ•ā§‹āĻĨāĻžāĻ¯āĻŧ āĻ†āĻŽāĻŋ āĻ‰āĻĒāĻ˛āĻŦā§āĻ§ āĻ›āĻŦāĻŋ āĻĻā§‡āĻ–āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋ? āĻ†āĻŽāĻŋ āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻœāĻžāĻ¨āĻŦā§‹ āĻ•ā§‹āĻ¨āĻŸāĻž āĻ†āĻŽāĻžāĻ° āĻĻāĻ°āĻ•āĻžāĻ°?

AI: āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ āĻ›āĻŦāĻŋāĻ—ā§āĻ˛āĻŋ āĻĨā§‡āĻ•ā§‡ āĻ¨ā§‡āĻ“āĻ¯āĻŧāĻž āĻšāĻ¯āĻŧ āĻĄāĻ•āĻžāĻ°āĻšāĻžāĻŦ, āĻĒāĻ°ā§āĻ¨āĻšāĻžāĻŦā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻŦāĻŋāĻ­ā§āĻ°āĻžāĻ¨ā§āĻ¤ āĻ•āĻ°āĻŦā§‡āĻ¨ āĻ¨āĻž :)āĨ¤ āĻāĻ•āĻŸāĻŋ āĻšāĻŋāĻ¤ā§āĻ°ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ āĻŦā§‡āĻļ āĻ•āĻ¯āĻŧā§‡āĻ•āĻŸāĻŋ āĻ¸āĻŽāĻžāĻŦā§‡āĻļ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡:
āĻ…āĻ¤ā§āĻ¯ā§āĻšā§āĻš: āĻ›āĻŦāĻŋāĻ—ā§āĻ˛āĻŋ āĻ¸āĻ‚āĻ—ā§ƒāĻšā§€āĻ¤ āĻšāĻ¯āĻŧ āĻāĻ•āĻŸāĻŋ āĻŽāĻŋāĻ¨āĻŋāĻŽāĻžāĻ˛āĻŋāĻ¸ā§āĻŸāĻŋāĻ• āĻ˛āĻŋāĻ¨āĻžāĻ•ā§āĻ¸ āĻ‡āĻŽā§‡āĻœā§‡, āĻŽāĻžāĻ¤ā§āĻ° 5 āĻāĻŽāĻŦāĻŋāĨ¤ āĻāĻ° āĻ…āĻ¸ā§āĻŦāĻŋāĻ§āĻž: āĻāĻŸāĻŋ āĻ¨āĻŋāĻœāĻ¸ā§āĻŦ libc āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ•āĻŽā§āĻĒāĻžāĻ‡āĻ˛ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡, āĻ¸ā§āĻŸā§āĻ¯āĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄ āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻœāĻ—ā§āĻ˛āĻŋ āĻāĻ¤ā§‡ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡ āĻ¨āĻžāĨ¤ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ā§€āĻ¯āĻŧ āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻœ āĻ–ā§āĻāĻœā§‡ āĻĒā§‡āĻ¤ā§‡ āĻāĻŦāĻ‚ āĻ‡āĻ¨āĻ¸ā§āĻŸāĻ˛ āĻ•āĻ°āĻ¤ā§‡ āĻ…āĻ¨ā§‡āĻ• āĻ¸āĻŽāĻ¯āĻŧ āĻ˛āĻžāĻ—āĻŦā§‡āĨ¤
āĻ†āĻāĻšāĻĄāĻŧā§‡āĻ° āĻĻāĻžāĻ—: āĻŦā§‡āĻ¸ āĻ‡āĻŽā§‡āĻœ, āĻ…āĻ¨ā§āĻ¯ āĻ‡āĻŽā§‡āĻœ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻ¤ā§‡ āĻŦā§āĻ¯āĻŦāĻšā§ƒāĻ¤ āĻšāĻ¯āĻŧ āĻ¨āĻžāĨ¤ āĻāĻŸāĻŋ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻŦāĻžāĻ‡āĻ¨āĻžāĻ°āĻŋ, āĻĒā§āĻ°āĻ¸ā§āĻ¤ā§āĻ¤ āĻĄā§‡āĻŸāĻž āĻšāĻžāĻ˛āĻžāĻ¨ā§‹āĻ° āĻ‰āĻĻā§āĻĻā§‡āĻļā§āĻ¯ā§‡ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤ āĻŦāĻžāĻ‡āĻ¨āĻžāĻ°āĻŋ āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨āĻ—ā§āĻ˛āĻŋ āĻšāĻžāĻ˛āĻžāĻ¨ā§‹āĻ° āĻœāĻ¨ā§āĻ¯ āĻ†āĻĻāĻ°ā§āĻļ āĻ¯āĻž āĻ†āĻĒāĻ¨āĻžāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ā§€āĻ¯āĻŧ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ•āĻŋāĻ›ā§ āĻ…āĻ¨ā§āĻ¤āĻ°ā§āĻ­ā§āĻ•ā§āĻ¤ āĻ•āĻ°ā§‡, āĻ¯ā§‡āĻŽāĻ¨ GO āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨ā§ˇ
āĻ‰āĻŦā§āĻ¨ā§āĻŸā§ āĻŦāĻž āĻĄā§‡āĻŦāĻŋāĻ¯āĻŧāĻžāĻ¨ā§‡āĻ° āĻŽāĻ¤ā§‹ āĻ¯ā§‡āĻ•ā§‹āĻ¨ā§‹ āĻ“āĻāĻ¸ā§‡āĻ° āĻ‰āĻĒāĻ° āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋ āĻ•āĻ°ā§‡āĨ¤ āĻ āĻŋāĻ• āĻ†āĻ›ā§‡, āĻ†āĻŽāĻŋ āĻŽāĻ¨ā§‡ āĻ•āĻ°āĻŋ āĻ¨āĻž āĻŦā§āĻ¯āĻžāĻ–ā§āĻ¯āĻž āĻ•āĻ°āĻžāĻ° āĻĻāĻ°āĻ•āĻžāĻ° āĻ†āĻ›ā§‡āĨ¤

AI: āĻāĻ–āĻ¨ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ…āĻ¤āĻŋāĻ°āĻŋāĻ•ā§āĻ¤ āĻ‡āĻ¨āĻ¸ā§āĻŸāĻ˛ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡āĨ¤ āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻœ āĻāĻŦāĻ‚ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ•ā§āĻ¯āĻžāĻļā§‡ āĻ¸āĻžāĻĢ āĻ•āĻ°ā§āĻ¨āĨ¤ āĻāĻŦāĻ‚ āĻ†āĻĒāĻ¨āĻŋ āĻāĻ–āĻ¨āĻ‡ āĻāĻŸāĻŋ āĻĢā§‡āĻ˛ā§‡ āĻĻāĻŋāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ āĻ†āĻĒā§āĻŸ-āĻĒā§‡āĻ¤ā§‡ āĻ†āĻĒāĻ—ā§āĻ°ā§‡āĻĄ. āĻ…āĻ¨ā§āĻ¯āĻĨāĻžāĻ¯āĻŧ, āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻŦāĻŋāĻ˛ā§āĻĄā§‡āĻ° āĻ¸āĻžāĻĨā§‡, āĻŦā§‡āĻ¸ āĻ‡āĻŽā§‡āĻœā§‡āĻ° āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻŸā§āĻ¯āĻžāĻ— āĻĨāĻžāĻ•āĻž āĻ¸āĻ¤ā§āĻ¤ā§āĻŦā§‡āĻ“, āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ āĻšāĻŋāĻ¤ā§āĻ° āĻĒāĻžāĻ“āĻ¯āĻŧāĻž āĻ¯āĻžāĻŦā§‡āĨ¤ āĻ‡āĻŽā§‡āĻœā§‡ āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻœ āĻ†āĻĒāĻĄā§‡āĻŸ āĻ•āĻ°āĻž āĻ°āĻ•ā§āĻˇāĻŖāĻžāĻŦā§‡āĻ•ā§āĻˇāĻŖāĻ•āĻžāĻ°ā§€āĻ° āĻ•āĻžāĻœ āĻāĻŦāĻ‚ āĻŸā§āĻ¯āĻžāĻ— āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤

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/*

AI: āĻ–āĻžāĻ°āĻžāĻĒ āĻ¨āĻž, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ•āĻžāĻœ āĻ•āĻ°āĻžāĻ° āĻ•āĻŋāĻ›ā§ āĻ†āĻ›ā§‡āĨ¤ āĻĻā§‡āĻ–ā§āĻ¨, āĻāĻ‡ āĻ•āĻŽāĻžāĻ¨ā§āĻĄāĻŸāĻŋ āĻāĻ–āĻžāĻ¨ā§‡:

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 āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻŋāĻ¤ āĻšāĻ¯āĻŧāĨ¤

āĻāĻ•āĻ‡ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ—ā§āĻ˛āĻŋ āĻ¨āĻŋāĻ°ā§āĻ­āĻ°āĻ¤āĻž āĻĒāĻ°āĻŋāĻšāĻžāĻ˛āĻ•ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ…āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻ­āĻžāĻˇāĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡, āĻ¯ā§‡āĻŽāĻ¨ āĻāĻ¨āĻĒāĻŋāĻāĻŽ, āĻĒāĻŋāĻĒ, āĻ•āĻŽā§āĻĒā§‹āĻœāĻžāĻ° āĻāĻŦāĻ‚ āĻ…āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻ¨āĻŋāĻ°ā§āĻ­āĻ°āĻ¤āĻžāĻ° āĻ¤āĻžāĻ˛āĻŋāĻ•āĻž āĻ¸āĻš āĻāĻ•āĻŸāĻŋ āĻĢāĻžāĻ‡āĻ˛ā§‡āĻ° āĻ‰āĻĒāĻ° āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋ āĻ•āĻ°ā§‡āĨ¤

āĻāĻŦāĻ‚ āĻ…āĻŦāĻļā§‡āĻˇā§‡, āĻŽāĻ¨ā§‡ āĻ°āĻžāĻ–āĻŦā§‡āĻ¨ āĻļā§āĻ°ā§āĻ¤ā§‡ āĻ†āĻŽāĻŋ āĻĄāĻ•āĻžāĻ° āĻŽāĻ¤āĻžāĻĻāĻ°ā§āĻļ "āĻāĻ• āĻ§āĻžāĻ°āĻ• - āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž" āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻ•āĻĨāĻž āĻŦāĻ˛ā§‡āĻ›āĻŋāĻ˛āĻžāĻŽ? āĻāĻ° āĻŽāĻžāĻ¨ā§‡ āĻšāĻ˛ āĻāĻ•āĻœāĻ¨ āĻ¸ā§āĻĒāĻžāĻ°āĻ­āĻžāĻ‡āĻœāĻžāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ āĻ¨ā§‡āĻ‡āĨ¤ āĻāĻ•āĻ‡ āĻ•āĻžāĻ°āĻŖā§‡ āĻ†āĻĒāĻ¨āĻžāĻ° systemd āĻ‡āĻ¨āĻ¸ā§āĻŸāĻ˛ āĻ•āĻ°āĻž āĻ‰āĻšāĻŋāĻ¤ āĻ¨āĻ¯āĻŧāĨ¤ āĻŽā§‚āĻ˛āĻ¤, āĻĄāĻ•āĻžāĻ° āĻ¨āĻŋāĻœā§‡āĻ‡ āĻāĻ•āĻœāĻ¨ āĻ¸ā§āĻĒāĻžāĻ°āĻ­āĻžāĻ‡āĻœāĻžāĻ°āĨ¤ āĻāĻŦāĻ‚ āĻ†āĻĒāĻ¨āĻŋ āĻ¯āĻ–āĻ¨ āĻāĻŸāĻŋāĻ¤ā§‡ āĻāĻ•āĻžāĻ§āĻŋāĻ• āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻšāĻžāĻ˛āĻžāĻ¨ā§‹āĻ° āĻšā§‡āĻˇā§āĻŸāĻž āĻ•āĻ°ā§‡āĻ¨, āĻāĻŸāĻŋ āĻāĻ•āĻŸāĻŋ āĻ¸ā§āĻĒāĻžāĻ°āĻ­āĻžāĻ‡āĻœāĻžāĻ° āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ¯āĻŧ āĻāĻ•āĻžāĻ§āĻŋāĻ• āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨ āĻšāĻžāĻ˛āĻžāĻ¨ā§‹āĻ° āĻŽāĻ¤ā§‹āĨ¤
āĻ¨āĻŋāĻ°ā§āĻŽāĻžāĻŖ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ, āĻ†āĻĒāĻ¨āĻŋ āĻāĻ•āĻŸāĻŋ āĻāĻ•āĻ• āĻšāĻŋāĻ¤ā§āĻ° āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻŦā§‡āĻ¨ āĻāĻŦāĻ‚ āĻ¤āĻžāĻ°āĻĒāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ā§€āĻ¯āĻŧ āĻ¸āĻ‚āĻ–ā§āĻ¯āĻ• āĻĒāĻžāĻ¤ā§āĻ°ā§‡ āĻšāĻžāĻ˛ā§ āĻ•āĻ°āĻŦā§‡āĻ¨ āĻ¯āĻžāĻ¤ā§‡ āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋāĻ¤ā§‡ āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻšāĻ˛ā§‡āĨ¤

āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻĒāĻ°ā§‡ āĻ¯ā§‡ āĻ†āĻ°ā§‹.

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"]

āĻ•āĻ¨ā§āĻŸā§‡āĻ‡āĻ¨āĻžāĻ° āĻļā§āĻ°ā§ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ†āĻŽāĻ°āĻž āĻ•āĻŋ āĻĄā§‡āĻŽāĻ¨ā§‡āĻ° āĻ˛āĻžā§āĻšāĻ•ā§‡ āĻ“āĻ­āĻžāĻ°āĻ°āĻžāĻ‡āĻĄ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋ?

āĻāĻ†āĻ‡: āĻšā§āĻ¯āĻžāĻ, āĻāĻŸāĻž āĻ āĻŋāĻ•āĨ¤ āĻ¯āĻžāĻ‡āĻšā§‹āĻ•, āĻ†āĻĒāĻ¨āĻŋ CMD āĻāĻŦāĻ‚ ENTRYPOINT āĻ‰āĻ­āĻ¯āĻŧāĻ‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨āĨ¤ āĻāĻŦāĻ‚ āĻĒāĻžāĻ°ā§āĻĨāĻ•ā§āĻ¯ āĻ•āĻŋ āĻ¤āĻž āĻ–ā§āĻāĻœā§‡ āĻŦā§‡āĻ° āĻ•āĻ°āĻž āĻšāĻ˛ āĻ†āĻĒāĻ¨āĻžāĻ° āĻŦāĻžāĻĄāĻŧāĻŋāĻ° āĻ•āĻžāĻœāĨ¤ HabrÊ āĻāĻ‡ āĻŦāĻŋāĻˇāĻ¯āĻŧā§‡ āĻāĻ•āĻŸāĻŋ āĻ­āĻžāĻ˛ āĻ†āĻ›ā§‡ āĻāĻ•āĻŸāĻŋ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§.

āĻ¸ā§āĻ¤āĻ°āĻžāĻ‚, āĻāĻ° āĻāĻ—āĻŋāĻ¯āĻŧā§‡ āĻšāĻ˛ā§āĻ¨. āĻ†āĻĒāĻ¨āĻŋ āĻ¨ā§‹āĻĄ āĻ‡āĻ¨āĻ¸ā§āĻŸāĻ˛ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻĢāĻžāĻ‡āĻ˛ āĻĄāĻžāĻ‰āĻ¨āĻ˛ā§‹āĻĄ āĻ•āĻ°ā§‡āĻ¨, āĻ¤āĻŦā§‡ āĻāĻŸāĻŋāĻ¤ā§‡ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ¯āĻž āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ āĻ¤āĻž āĻĨāĻžāĻ•āĻŦā§‡ āĻāĻŽāĻ¨ āĻ•ā§‹āĻ¨āĻ“ āĻ—ā§āĻ¯āĻžāĻ°āĻžāĻ¨ā§āĻŸāĻŋ āĻ¨ā§‡āĻ‡āĨ¤ āĻ†āĻŽāĻ°āĻž āĻŦā§ˆāĻ§āĻ¤āĻž āĻ¯ā§‹āĻ— āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡. āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, āĻāĻ‡ āĻŽāĻ¤:

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: āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻĢāĻžāĻ‡āĻ˛ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻšāĻ˛ā§‡, āĻŦāĻŋāĻ˛ā§āĻĄ āĻŦā§āĻ¯āĻ°ā§āĻĨ āĻšāĻŦā§‡āĨ¤

āĻāĻ†āĻ‡: āĻšā§āĻ¯āĻžāĻ, āĻāĻŦāĻ‚ āĻ…āĻĻā§āĻ­ā§āĻ¤āĻ­āĻžāĻŦā§‡ āĻ¯āĻĨā§‡āĻˇā§āĻŸ, āĻāĻŸāĻŋāĻ“ āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ˛āĻžāĻ¸āĨ¤ āĻ†āĻĒāĻ¨āĻŋ āĻœāĻžāĻ¨āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŦā§‡āĻ¨ āĻ¯ā§‡ āĻĢāĻžāĻ‡āĻ˛āĻŸāĻŋ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻŋāĻ¤ āĻšāĻ¯āĻŧā§‡āĻ›ā§‡ āĻāĻŦāĻ‚ āĻ†āĻĒāĻ¨āĻŋ āĻ¸ā§‡āĻ–āĻžāĻ¨ā§‡ āĻ•ā§€ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡ āĻ¤āĻž āĻĻā§‡āĻ–āĻ¤ā§‡ āĻ¸āĻ•ā§āĻˇāĻŽ āĻšāĻŦā§‡āĻ¨āĨ¤ āĻ†āĻĒāĻ¨āĻŋ āĻ•āĻ–āĻ¨āĻ‡ āĻœāĻžāĻ¨ā§‡āĻ¨ āĻ¨āĻž, āĻ¤āĻžāĻ°āĻž āĻ¯ā§‹āĻ— āĻ•āĻ°ā§‡āĻ›ā§‡, āĻŦāĻ˛ā§‡, āĻāĻ•āĻŸāĻŋ āĻ¸ā§āĻ•ā§āĻ°āĻŋāĻĒā§āĻŸ āĻ¯āĻž āĻāĻŸāĻŋ āĻĒā§ŒāĻāĻ›āĻžāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡ āĻāĻŽāĻ¨ āĻ¸āĻŦāĻ•āĻŋāĻ›ā§ āĻŽā§āĻ›ā§‡ āĻĻā§‡āĻ¯āĻŧ, āĻŦāĻž āĻāĻ•āĻŸāĻŋ āĻŦā§āĻ¯āĻžāĻ•āĻĄā§‹āĻ° āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§‡āĨ¤

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 āĻāĻŦāĻ‚ āĻŦāĻžāĻ—-āĻŽā§āĻ•ā§āĻ¤ āĻ•ā§‹āĻĄ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻ•āĻ¯āĻŧā§‡āĻ• āĻ¸ā§‡āĻ•ā§‡āĻ¨ā§āĻĄ āĻšāĻŋāĻ¨ā§āĻ¤āĻž āĻ•āĻ°āĻžāĻ° āĻĒāĻ°ā§‡, āĻ¤āĻŋāĻ¨āĻŋ āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ°āĻļā§āĻ¨ āĻœāĻŋāĻœā§āĻžāĻžāĻ¸āĻž āĻ•āĻ°ā§‡āĻ¨āĨ¤

āĻāĻ†āĻ‡: āĻ†āĻĒāĻ¨āĻŋ āĻ˛āĻ—āĻ—ā§āĻ˛āĻŋ āĻ•ā§‹āĻĨāĻžāĻ¯āĻŧ āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŖ āĻ•āĻ°āĻŦā§‡āĻ¨?

P: āĻ…āĻŦāĻļā§āĻ¯āĻ‡, production.log āĻāĨ¤ āĻ¯āĻžāĻ‡āĻšā§‹āĻ•, āĻšā§āĻ¯āĻžāĻ, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻ†āĻŽāĻ°āĻž ssh āĻ›āĻžāĻĄāĻŧāĻž āĻ¤āĻžāĻĻā§‡āĻ° āĻ…ā§āĻ¯āĻžāĻ•ā§āĻ¸ā§‡āĻ¸ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋ?

āĻāĻ†āĻ‡: āĻ†āĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻ¸ā§‡āĻ—ā§āĻ˛āĻŋ āĻĢāĻžāĻ‡āĻ˛āĻ—ā§āĻ˛āĻŋāĻ¤ā§‡ āĻ°ā§‡āĻ–ā§‡ āĻ¯āĻžāĻ¨, āĻ†āĻĒāĻ¨āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ‡āĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§‡ āĻāĻ•āĻŸāĻŋ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻ‰āĻĻā§āĻ­āĻžāĻŦāĻŋāĻ¤ āĻšāĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤ docker exec āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻĒāĻžāĻ¤ā§āĻ°ā§‡ āĻ¯ā§‡āĻ•ā§‹āĻ¨ā§‹ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻ° āĻ•āĻ°āĻ¤ā§‡ āĻĻā§‡āĻ¯āĻŧāĨ¤ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, āĻ†āĻĒāĻ¨āĻŋ āĻ˛āĻ— āĻœāĻ¨ā§āĻ¯ āĻŦāĻŋāĻĄāĻŧāĻžāĻ˛ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨. āĻāĻŦāĻ‚ āĻšāĻžāĻŦāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ -āĻ‡ āĻāĻŦāĻ‚ āĻ°āĻžāĻ¨āĻŋāĻ‚ āĻŦā§āĻ¯āĻžāĻļ (āĻ¯āĻĻāĻŋ āĻ•āĻ¨āĻŸā§‡āĻ‡āĻ¨āĻžāĻ°ā§‡ āĻ‡āĻ¨āĻ¸ā§āĻŸāĻ˛ āĻ•āĻ°āĻž āĻĨāĻžāĻ•ā§‡) āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ•āĻ¨ā§āĻŸā§‡āĻ‡āĻ¨āĻžāĻ°ā§‡ āĻ‡āĻ¨ā§āĻŸāĻžāĻ°ā§‡āĻ•ā§āĻŸāĻŋāĻ­ āĻ…ā§āĻ¯āĻžāĻ•ā§āĻ¸ā§‡āĻ¸ āĻĻā§‡āĻŦā§‡āĨ¤

āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ†āĻĒāĻ¨āĻžāĻ° āĻĢāĻžāĻ‡āĻ˛ā§‡ āĻ˛āĻ— āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŖ āĻ•āĻ°āĻž āĻ‰āĻšāĻŋāĻ¤ āĻ¨āĻ¯āĻŧāĨ¤ āĻ¸āĻ°ā§āĻŦāĻ¨āĻŋāĻŽā§āĻ¨, āĻāĻŸāĻŋ āĻ§āĻžāĻ°āĻ•āĻŸāĻŋāĻ° āĻ…āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻŋāĻ¤ āĻŦā§ƒāĻĻā§āĻ§āĻŋāĻ° āĻĻāĻŋāĻ•ā§‡ āĻĒāĻ°āĻŋāĻšāĻžāĻ˛āĻŋāĻ¤ āĻ•āĻ°ā§‡ āĻāĻŦāĻ‚ āĻ•ā§‡āĻ‰ āĻ˛āĻ—āĻ—ā§āĻ˛āĻŋ āĻ˜ā§‹āĻ°āĻžāĻ¯āĻŧ āĻ¨āĻžāĨ¤ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ˛āĻ— stdout āĻĒāĻžāĻ āĻžāĻ¨ā§‹ āĻ‰āĻšāĻŋāĻ¤. āĻ¸ā§‡āĻ–āĻžāĻ¨ā§‡ āĻ¤āĻžāĻ°āĻž āĻ‡āĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§‡ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻĻā§‡āĻ–āĻž āĻ¯āĻžāĻŦā§‡ āĻĄāĻ•āĻžāĻ° āĻ˛āĻ—.

P: Igor Ivanovich, āĻšāĻ¯āĻŧāĻ¤ā§‹ āĻ†āĻŽāĻŋ āĻ˛āĻ—āĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻŽāĻžāĻ‰āĻ¨ā§āĻŸā§‡āĻĄ āĻĄāĻŋāĻ°ā§‡āĻ•ā§āĻŸāĻ°āĻŋāĻ¤ā§‡, āĻāĻ•āĻŸāĻŋ āĻĢāĻŋāĻœāĻŋāĻ•ā§āĻ¯āĻžāĻ˛ āĻ¨ā§‹āĻĄā§‡, āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ° āĻĄā§‡āĻŸāĻž āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻ°āĻžāĻ–āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋ?

AI: āĻāĻŸāĻž āĻ­āĻžāĻ˛ āĻ¯ā§‡ āĻ†āĻĒāĻ¨āĻŋ āĻ¨ā§‹āĻĄā§‡āĻ° āĻĄāĻŋāĻ¸ā§āĻ•ā§‡ āĻ˛ā§‹āĻĄ āĻ•āĻ°āĻž āĻĄā§‡āĻŸāĻž āĻ¸āĻ°āĻžāĻ¤ā§‡ āĻ­ā§āĻ˛āĻŦā§‡āĻ¨ āĻ¨āĻžāĨ¤ āĻ†āĻĒāĻ¨āĻŋ āĻ˛āĻ— āĻĻāĻŋāĻ¯āĻŧā§‡āĻ“ āĻāĻŸāĻŋ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨, āĻļā§āĻ§ā§ āĻ˜ā§‚āĻ°ā§āĻŖāĻ¨ āĻ¸ā§‡āĻŸ āĻ†āĻĒ āĻ•āĻ°āĻ¤ā§‡ āĻ­ā§āĻ˛āĻŦā§‡āĻ¨ āĻ¨āĻžāĨ¤
āĻāĻŸāĻž, āĻ†āĻĒāĻ¨āĻŋ āĻšāĻžāĻ˛āĻžāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨.

āĻĒāĻŋ: āĻ‡āĻ—āĻ° āĻ‡āĻ­āĻžāĻ¨ā§‹āĻ­āĻŋāĻš, āĻ†āĻĒāĻ¨āĻŋ āĻ†āĻŽāĻžāĻ•ā§‡ āĻ•ā§€ āĻĒāĻĄāĻŧāĻ¤ā§‡ āĻĒāĻ°āĻžāĻŽāĻ°ā§āĻļ āĻĻāĻŋāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨?

āĻāĻ†āĻ‡: āĻĒā§āĻ°āĻĨāĻŽā§‡ āĻĒāĻĄāĻŧā§āĻ¨ āĻĄāĻ•āĻžāĻ° āĻĄā§‡āĻ­ā§‡āĻ˛āĻĒāĻžāĻ°āĻĻā§‡āĻ° āĻ•āĻžāĻ› āĻĨā§‡āĻ•ā§‡ āĻ¸ā§āĻĒāĻžāĻ°āĻŋāĻļ, āĻĄāĻ•āĻžāĻ°āĻ•ā§‡ āĻ¤āĻžāĻĻā§‡āĻ° āĻšā§‡āĻ¯āĻŧā§‡ āĻ­āĻžāĻ˛ āĻ•āĻŽāĻ‡ āĻ•ā§‡āĻ‰ āĻœāĻžāĻ¨ā§‡āĨ¤

āĻāĻŦāĻ‚ āĻ¯āĻĻāĻŋ āĻ†āĻĒāĻ¨āĻŋ āĻāĻ•āĻŸāĻŋ āĻ‡āĻ¨ā§āĻŸāĻžāĻ°ā§āĻ¨āĻļāĻŋāĻĒ āĻĒā§‡āĻ¤ā§‡ āĻšāĻžāĻ¨, āĻ¯āĻžāĻ¨ āĻ¨āĻŋāĻŦāĻŋāĻĄāĻŧ. āĻ¸āĻ°ā§āĻŦā§‹āĻĒāĻ°āĻŋ, āĻ…āĻ¨ā§āĻļā§€āĻ˛āĻ¨ āĻ›āĻžāĻĄāĻŧāĻž āĻ¤āĻ¤ā§āĻ¤ā§āĻŦ āĻŽā§ƒāĻ¤āĨ¤

āĻ‰āĻ¤ā§āĻ¸: www.habr.com

āĻāĻ•āĻŸāĻŋ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻœā§āĻĄāĻŧā§āĻ¨