ื“ื•ืงืจ: ืขืฆื” ื’ืจื•ืขื”

ื“ื•ืงืจ: ืขืฆื” ื’ืจื•ืขื”

ื›ืฉืœืžื“ืชื™ ื ื”ื™ื’ื” ื‘ืžื›ื•ื ื™ืช, ื›ื‘ืจ ื‘ืฉื™ืขื•ืจ ื”ืจืืฉื•ืŸ ื”ืžื“ืจื™ืš ื ืกืข ืœืฆื•ืžืช ื‘ืจื•ื•ืจืก, ื•ืื– ืืžืจ ืฉืืกื•ืจ ืœืขืฉื•ืช ืืช ื–ื” - ืœืขื•ืœื ืœื. ื–ื›ืจืชื™ ืืช ื”ื›ืœืœ ื”ื–ื” ืžื™ื“ ื•ืœืžืฉืš ื›ืœ ื—ื™ื™.

ืืชื” ืงื•ืจื ืœื™ืœื“ื™ื ืืช "ืขืฆื” ืจืขื”" ืžืืช ื’ืจื™ื’ื•ืจื™ ืื•ืกื˜ืจ, ื•ืืชื” ืจื•ืื” ื‘ืื™ื–ื• ืงืœื•ืช ื•ื‘ืื•ืคืŸ ื˜ื‘ืขื™ ืขื•ืœื” ืœื”ื ืฉื”ื ืœื ืฆืจื™ื›ื™ื ืœืขืฉื•ืช ืืช ื–ื”.

ื”ืจื‘ื” ืžืืžืจื™ื ื ื›ืชื‘ื• ืขืœ ืื™ืš ืœื›ืชื•ื‘ Dockerfile ื‘ืฆื•ืจื” ื ื›ื•ื ื”. ืื‘ืœ ืœื ื ืชืงืœืชื™ ื‘ื”ื•ืจืื•ืช ื›ื™ืฆื“ ืœื›ืชื•ื‘ Dockerfiles ืฉื’ื•ื™ื™ื. ืื ื™ ืžืžืœื ืืช ื”ื—ืกืจ ื”ื–ื”. ื•ืื•ืœื™ ื‘ืคืจื•ื™ืงื˜ื™ื ืฉืื ื™ ืžืงื‘ืœ ืชืžื™ื›ื”, ื™ื”ื™ื• ืคื—ื•ืช ืงื‘ืฆื™ dockerfiles ื›ืืœื”.

ื›ืœ ื”ื“ืžื•ื™ื•ืช, ื”ืžืฆื‘ื™ื ื•ื”-Dockerfile ื”ื ืคื™ืงื˜ื™ื‘ื™ื™ื. ืื ืืชื” ืžื–ื”ื” ืืช ืขืฆืžืš, ืกืœื™ื—ื”.

ื™ืฆื™ืจืช Dockerfile, ืžื‘ืฉืจ ืจืขื•ืช ื•ื ื•ืจื

ืคื™ื˜ืจ (ืžืคืชื— Java/rubby/php ื‘ื›ื™ืจ): ืขืžื™ืช ื•ืกื™ืœื™, ื”ืื ื›ื‘ืจ ื”ืขืœื™ืช ืžื•ื“ื•ืœ ื—ื“ืฉ ืœ-Docker?
ื•ืืกื™ืœื™ (ื’'ื•ื ื™ื•ืจ): ืœื, ืœื ื”ื™ื” ืœื™ ื–ืžืŸ, ืื ื™ ืœื ื™ื›ื•ืœ ืœื”ื‘ื™ืŸ ืืช ื–ื” ืขื ื”ื“ื•ืงืจ ื”ื–ื”. ื™ืฉ ื›ืœ ื›ืš ื”ืจื‘ื” ืžืืžืจื™ื ืขืœ ื–ื”, ื–ื” ืžืกื—ืจืจ.

ืคื™ื˜ืจ: ื”ื™ื” ืœื ื• ืžื•ืขื“ ืื—ืจื•ืŸ ืœืคื ื™ ืฉื ื”. ืชืŸ ืœื™ ืœืขื–ื•ืจ ืœืš, ืื ื—ื ื• ื ื‘ื™ืŸ ืืช ื–ื” ืชื•ืš ื›ื“ื™. ืชื’ื™ื“ ืœื™ ืžื” ืœื ืขื•ื‘ื“ ืœืš.

ื•ืืกื™ืœื™: ืื ื™ ืœื ื™ื›ื•ืœ ืœื‘ื—ื•ืจ ืชืžื•ื ื” ื‘ืกื™ืกื™ืช ื›ืš ืฉืชื”ื™ื” ืžื™ื ื™ืžืœื™ืช, ืื‘ืœ ื™ืฉ ื‘ื” ืืช ื›ืœ ืžื” ืฉืืชื” ืฆืจื™ืš.
ืคื™ื˜ืจ: ืงื— ืืช ืชืžื•ื ืช ื”ืื•ื‘ื•ื ื˜ื•, ื™ืฉ ื‘ื” ื›ืœ ืžื” ืฉืืชื” ืฆืจื™ืš. ื•ืžื” ื–ื” ื”ืจื‘ื” ื“ื‘ืจื™ื ืžื™ื•ืชืจื™ื ื™ื•ืขื™ืœ ื‘ื”ืžืฉืš. ื•ืืœ ืชืฉื›ื— ืœืฉื™ื ืืช ื”ืชื’ ื”ืขื“ื›ื ื™ ื‘ื™ื•ืชืจ ื›ืš ืฉื”ื’ืจืกื” ืชื”ื™ื” ืชืžื™ื“ ื”ืขื“ื›ื ื™ืช ื‘ื™ื•ืชืจ.

ื•ื”ืฉื•ืจื” ื”ืจืืฉื•ื ื” ืžื•ืคื™ืขื” ื‘- Dockerfile:

FROM ubuntu:latest

ืคื™ื˜ืจ: ืžื” ื”ืœืื”, ื‘ืžื” ื”ืฉืชืžืฉื ื• ื›ื“ื™ ืœื›ืชื•ื‘ ืืช ื”ืžื•ื“ื•ืœ ืฉืœื ื•?
ื•ืืกื™ืœื™: ืื– ืจื•ื‘ื™, ื™ืฉ ืฉืจืช ืื™ื ื˜ืจื ื˜ ื•ื™ืฉ ืœื”ืคืขื™ืœ ื›ืžื” ื“ืžื•ื ื™ ืฉื™ืจื•ืช.
ืคื™ื˜ืจ: ื›ืŸ, ืžื” ืื ื—ื ื• ืฆืจื™ื›ื™ื: ืจื•ื‘ื™, bundler, nodejs, imagemagick ื•ืžื” ืขื•ื“... ื•ื‘ืžืงื‘ื™ืœ, ื‘ืฆืข ืฉื“ืจื•ื’ ื›ื“ื™ ื‘ื”ื—ืœื˜ ืœืงื‘ืœ ื—ื‘ื™ืœื•ืช ื—ื“ืฉื•ืช.
ื•ืืกื™ืœื™: ื•ืœื ื ื™ืฆื•ืจ ืžืฉืชืžืฉ ื›ื“ื™ ืฉืœื ื ื”ื™ื” ืชื—ืช ืฉื•ืจืฉ?
ืคื™ื˜ืจ: ืœืขื–ืื–ืœ, ืื– ืืชื” ืขื“ื™ื™ืŸ ืฆืจื™ืš ืœื”ืฉืชื˜ื•ืช ืขื ื”ื–ื›ื•ื™ื•ืช.
ื•ืืกื™ืœื™: ืื ื™ ืฆืจื™ืš ื–ืžืŸ, ื‘ืขืจืš 15 ื“ืงื•ืช, ื›ื“ื™ ืœื—ื‘ืจ ืืช ื”ื›ืœ ืœืคืงื•ื“ื” ืื—ืช, ืงืจืืชื™ ืฉ...
(ืคื™ื˜ืจ ืงื•ื˜ืข ื‘ื’ืกื•ืช ืืช ื”ื’'ื•ื ื™ื•ืจ ื”ืงืคื“ืŸ ื•ื”ื—ื›ื ืžืื•ื“.)
ืคื™ื˜ืจ: ื›ืชื•ื‘ ื‘ืคืงื•ื“ื•ืช ื ืคืจื“ื•ืช, ื–ื” ื™ื”ื™ื” ืงืœ ื™ื•ืชืจ ืœืงืจื™ืื”.

Dockerfile ื’ื“ืœ:

FROM ubuntu:latest
RUN apt-get update
RUN apt-get upgrade
RUN apt-get -y install libpq-dev imagemagick gsfonts ruby-full
RUN gem install bundler
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/*

ื•ืื– ืื™ื’ื•ืจ ืื™ื‘ื ื•ื‘ื™ืฅ', DevOps (ืื‘ืœ ื™ื•ืชืจ Ops ืžืืฉืจ Dev), ืžืชืคืจืฅ ืœืžืฉืจื“ ื‘ืฆืขืงื•ืช:

AI: Petya, ื”ืžืคืชื—ื™ื ืฉืœืš ืฉื‘ืจื• ืฉื•ื‘ ืืช ืžืกื“ ื”ื ืชื•ื ื™ื ืฉืœ ื”ืžื–ื•ืŸ, ืžืชื™ ื–ื” ื™ื™ื’ืžืจ...

ืœืื—ืจ ื”ืชื›ืชืฉื•ืช ืงื˜ื ื”, ืื™ื’ื•ืจ ืื™ื‘ื ื•ื‘ื™ืฅ' ืžืชืงืจืจ ื•ืžืชื—ื™ืœ ืœื’ืœื•ืช ืžื” ืขืžื™ืชื™ื• ืขื•ืฉื™ื ื›ืืŸ.

AI: ืžื” ืืชื” ืขื•ืฉื”?
ื•ืืกื™ืœื™: ืคื™ื˜ืจ ืขื•ื–ืจ ืœื™ ืœื™ืฆื•ืจ Dockerfile ืขื‘ื•ืจ ืžื•ื“ื•ืœ ื—ื“ืฉ.
AI: ืชืŸ ืœื™ ืœื”ืกืชื›ืœ... ืžื” ื›ืชื‘ืช ื›ืืŸ, ืืชื” ืžื ืงื” ืืช ื”ืžืื’ืจ ืขื ืคืงื•ื“ื” ื ืคืจื“ืช, ื–ื• ืฉื›ื‘ื” ื ื•ืกืคืช... ืื‘ืœ ืื™ืš ืžืชืงื™ื ื™ื ืชืœื•ืช ืื ืœื ื”ืขืชืงืช ืืช Gemfile! ื•ื‘ื›ืœืœ ื–ื” ืœื ื˜ื•ื‘.
ืคื™ื˜ืจ: ืื ื ืคื ื” ืœืขื ื™ื™ื ื™ื ืฉืœืš, ืื ื—ื ื• ื ื‘ื™ืŸ ืืช ื–ื” ืื™ื›ืฉื”ื•.

ืื™ื’ื•ืจ ืื™ื‘ื ื•ื‘ื™ืฅ' ื ืื ื— ื‘ืขืฆื‘ ื•ืขื•ื–ื‘ ืœื”ื‘ื™ืŸ ืžื™ ืฉื‘ืจ ืืช ื‘ืกื™ืก ื”ื ืชื•ื ื™ื.

ืคื™ื˜ืจ: ื›ืŸ, ืื‘ืœ ื”ื•ื ืฆื“ืง ืœื’ื‘ื™ ื”ืงื•ื“, ืื ื—ื ื• ืฆืจื™ื›ื™ื ืœื“ื—ื•ืฃ ืื•ืชื• ืœืชืžื•ื ื”. ื•ื‘ื•ืื• ื ืชืงื™ืŸ ืžื™ื“ ssh ื•- supervisor, ืื—ืจืช ื ืชื—ื™ืœ ืืช ื”ื“ืžื•ื ื™ื.

ื•ืืกื™ืœื™: ืื– ืงื•ื“ื ื›ืœ ืืขืชื™ืง ืืช Gemfile ื•ืืช Gemfile.lock, ืื—ืจ ื›ืš ืืชืงื™ืŸ ื”ื›ืœ, ื•ืื– ืื ื™ ืืขืชื™ืง ืืช ื›ืœ ื”ืคืจื•ื™ื™ืงื˜. ืื Gemfile ืœื ื™ืฉืชื ื”, ื”ืฉื›ื‘ื” ืชื™ืœืงื— ืžื”ืžื˜ืžื•ืŸ.
ืคื™ื˜ืจ: ืœืžื” ื›ื•ืœื›ื ืขื ื”ืฉื›ื‘ื•ืช ื”ืืœื”, ื”ืขืชืง ื”ื›ืœ ื‘ื‘ืช ืื—ืช. ืชืขืชื™ืง ืžื™ื“. ื”ืฉื•ืจื” ื”ืจืืฉื•ื ื” ืžืžืฉ.

ื”-Dockerfile ื ืจืื” ื›ืขืช ื›ืš:

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
RUN gem install bundler
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/* 

ืคื™ื˜ืจ: ืื– ืžื” ื”ืœืื”? ื™ืฉ ืœืš ื”ื’ื“ืจื•ืช ืขื‘ื•ืจ ืžืคืงื—?
ื•ืืกื™ืœื™: ืœื, ืœื. ืื‘ืœ ืื ื™ ืืขืฉื” ืืช ื–ื” ืžื”ืจ.
ืคื™ื˜ืจ: ืื– ืืชื” ืชืขืฉื” ืืช ื–ื”. ื‘ื•ื ื ืฉืจื˜ื˜ ืขื›ืฉื™ื• ืชืกืจื™ื˜ ืื™ื ื™ื˜ ืฉื™ืคืขื™ืœ ื”ื›ืœ. ืื•ืงื™ื™, ืื– ืืชื” ืžืชื—ื™ืœ ssh, ืขื nohup, ื›ื“ื™ ืฉื ื•ื›ืœ ืœื”ืชื—ื‘ืจ ืœืงื•ื ื˜ื™ื™ื ืจ ื•ืœืจืื•ืช ืžื” ื”ืฉืชื‘ืฉ. ืœืื—ืจ ืžื›ืŸ ื”ืคืขืœ ืืช ื”ืžืคืงื— ื‘ืื•ืชื• ืื•ืคืŸ. ื•ื‘ื›ืŸ, ืื– ืืชื” ืคืฉื•ื˜ ืจืฅ ื ื•ืกืข.
ืฉ: ืื‘ืœ ืงืจืืชื™ ืฉืฆืจื™ืš ืœื”ื™ื•ืช ืชื”ืœื™ืš ืื—ื“, ืื– Docker ื™ื™ื“ืข ืฉืžืฉื”ื• ื”ืฉืชื‘ืฉ ื•ื™ื›ื•ืœ ืœื”ืคืขื™ืœ ืžื—ื“ืฉ ืืช ื”ืžื™ื›ืœ.
P: ืืœ ืชื˜ืจื™ื“ ืืช ื”ืจืืฉ ืฉืœืš ื‘ืฉื˜ื•ื™ื•ืช. ื•ื‘ื›ืœืœ ืื™ืš? ืื™ืš ืžืคืขื™ืœื™ื ืืช ื›ืœ ื–ื” ื‘ืชื”ืœื™ืš ืื—ื“? ืชืŸ ืœืื™ื’ื•ืจ ืื™ื‘ื ื•ื‘ื™ืฅ' ืœื—ืฉื•ื‘ ืขืœ ื™ืฆื™ื‘ื•ืช, ืœื ืกืชื ื”ื•ื ืžืงื‘ืœ ืžืฉื›ื•ืจืช. ื”ืชืคืงื™ื“ ืฉืœื ื• ื”ื•ื ืœื›ืชื•ื‘ ืงื•ื“. ื•ื‘ื›ืœืœ, ืฉื™ื’ื™ื“ ืชื•ื“ื” ืฉื›ืชื‘ื ื• ืœื• ืืช ื”-Dockefile.

10 ื“ืงื•ืช ื•ืฉื ื™ ืกืจื˜ื•ื ื™ื ืขืœ ื—ืชื•ืœื™ื ืžืื•ื—ืจ ื™ื•ืชืจ.

ืฉ: ืขืฉื™ืชื™ ื”ื›ืœ. ื”ื•ืกืคืชื™ ืขื•ื“ ื”ืขืจื•ืช.
P: ื”ืจืื” ืœื™!

ื”ื’ืจืกื” ื”ืื—ืจื•ื ื” ืฉืœ Dockerfile:

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

# ะ—ะฐะฟัƒัะบะฐะตะผ ัะบั€ะธะฟั‚, ะฟั€ะธ ัั‚ะฐั€ั‚ะต ะบะพะฝั‚ะตะนะฝะตั€ะฐ, ะบะพั‚ะพั€ั‹ะน ะทะฐะฟัƒัั‚ะธั‚ ะฒัะต ะพัั‚ะฐะปัŒะฝะพะต.
CMD [โ€œ/app/init.shโ€]

P: ื ื”ื“ืจ, ืื ื™ ืื•ื”ื‘ ืืช ื–ื”. ื•ื”ืชื’ื•ื‘ื•ืช ื‘ืจื•ืกื™ืช, ื ื•ื—ื•ืช ื•ืงืจื™ืื•ืช, ื›ื•ืœื ื”ื™ื• ืขื•ื‘ื“ื™ื ื›ื›ื”. ืœื™ืžื“ืชื™ ืื•ืชืš ื”ื›ืœ, ืืช ื”ืฉืืจ ืืชื” ื™ื›ื•ืœ ืœืขืฉื•ืช ืœื‘ื“. ื‘ื•ื ื ืœืš ืœืฉืชื•ืช ืงืคื”...

ื•ื‘ื›ืŸ, ืขื›ืฉื™ื• ื™ืฉ ืœื ื• Dockerfile ื ื•ืจื ืœื—ืœื•ื˜ื™ืŸ, ืฉืžืจืื”ื• ื™ื’ืจื•ื ืœืื™ื’ื•ืจ ืื™ื‘ื ื•ื‘ื™ืฅ' ืœืจืฆื•ืช ืœืคืจื•ืฉ ื•ื”ืขื™ื ื™ื™ื ืฉืœื• ื™ื›ืื‘ื• ืขื•ื“ ืฉื‘ื•ืข. ื”-Dockerfile, ื›ืžื•ื‘ืŸ, ื™ื›ื•ืœ ืœื”ื™ื•ืช ืืคื™ืœื• ื™ื•ืชืจ ื’ืจื•ืข, ืื™ืŸ ื’ื‘ื•ืœ ืœืฉืœืžื•ืช. ืื‘ืœ ื‘ืชื•ืจ ื”ืชื—ืœื”, ื–ื” ื™ืฆืœื™ื—.

ืื ื™ ืจื•ืฆื” ืœืกื™ื™ื ื‘ืฆื™ื˜ื•ื˜ ืžืืช ื’ืจื™ื’ื•ืจื™ ืื•ืกื˜ืจ:

ืื ืืชื” ืขื“ื™ื™ืŸ ืœื ื‘ื˜ื•ื—
ื‘ื—ืจื ื• ื‘ื“ืจืš ื‘ื—ื™ื™ื,
ื•ืืชื” ืœื ื™ื•ื“ืข ืœืžื”
ื”ืชื—ืœ ืืช ืžืกืข ื”ืขื‘ื•ื“ื” ืฉืœืš,
ืœืฉื‘ื•ืจ ืืช ื”ื ื•ืจื•ืช ื‘ืžืกื“ืจื•ื ื•ืช -
ืื ืฉื™ื ื™ื’ื™ื“ื• ืœืš "ืชื•ื“ื”".
ืืชื” ืชืขื–ื•ืจ ืœืื ืฉื™ื
ื—ืกื•ืš ื‘ื—ืฉืžืœ.

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”