Probabil ați auzit despre termenii Docker precum containere, imagini, servicii, volume, rețea, fișier Docker, fișier docker-compose, nu? Sau ați urmărit câteva videoclipuri despre ce este, dar nu sunteți sigur cum se poate aplica vieții dvs. de zi cu zi ca dezvoltator?

La asta m-am gândit prima dată după ce am vizionat videoclipuri despre Docker. Docker nu numai că poate rula aplicații web, servere și baze de date, dar poate fi și un mediu de dezvoltare locală! Am scris acest articol nu numai ca să puteți învăța cum să faceți acest lucru, ci și pentru mine, așa că nu îl voi uita. Să începem!

Cuprins

  • De ce Docker?
  • Instalarea fișierului docker și Ignorefiles
  • Dockerfile și Docker-Compose
  • Construirea și funcționarea containerului
  • Realizarea unei noi aplicații rails și pornirea serverului
  • A curăța
  • Concluzie și repo

De ce Docker?

De ce să folosești docker? De ce nu îl instalați doar pe mașina dvs. locală și instalați Ruby Version Manager (rvm) sau Ruby Environment (rbenv)?

Configurarea Ruby On Rails cu ajutorul acestor instrumente este excelentă. Mi-au trebuit peste 3 ore de instalare, depanare și căutare în documentație pentru a o face să funcționeze. Dar recent, am primit reformatarea computerului. Dar nu am enumerat și nu am luat act de site-urile web pe care le-am vizitat pentru a-l face să funcționeze pe mașina mea. Am uitat cum să-l instalez din nou și este greu să repet pașii.

Aici strălucește Docker. Instalați docker, încărcați fișierele docker, rulați câteva comenzi în terminal, sunteți deja configurat! Și, de asemenea, dacă doriți să dezinstalați tot ce ați făcut? Este greu de urmărit ce pași trebuie anulați. Cu Docker, sunt doar câteva comenzi de curățat.

Când mă uitam la un tutorial online despre docker, Dan Wahlin, profesorul, a spus că unul dintre beneficiile docker-ului este accelerarea îmbarcării dezvoltatorului. Dan a spus în tutorialul său:

„Docker vă poate ajuta acolo, deoarece putem realiza una sau mai multe imagini care pot fi apoi convertite în containere care rulează, iar aceste containere pot rula pe diferitele noastre dezvoltatoare și chiar pe mașini de designer.”

Să presupunem că aveți o echipă de dezvoltatori, designeri și testeri și că aveți o aplicație cu un server back-end, server de baze de date și server de cache. Aveți 12 mașini curate de ardezie, cu o combinație de computere Linux și Mac. Sigur doriți să instalați, să depanați și să urmați instrucțiuni de instalare diferite, care depind de aparat? Apoi faceți piesele să funcționeze, una câte una, pe fiecare mașină, fără asigurarea că nu vor întâmpina erori variate pe parcurs?

Acesta este motivul pentru care mi-am luat timp să studiez Docker. Cu câteva comenzi și câteva linii ale unui fișier de configurare, sunteți deja configurat. În secțiunea următoare, ne vom murdări mâinile cu configurarea docker-ului.

Instalarea Docker și inclusiv Ignorefiles

1. Instalați Docker

Nu voi vorbi prea mult despre instalarea docker-ului, există multe videoclipuri acolo. Dar, de obicei, este doar să descărcați și să deschideți programul de instalare, să înregistrați un cont pe dockerhub și sunteți bine. Verifică Documente de instalare Docker.

2. Faceți un .dockerignore fişier

Ce este un fișier dockerignore? Fișierul Dockerignore îi spune doar lui Docker ce fișiere trebuie ignorate în container. Un exemplu este atunci când aveți un fișier activ, js, css, care se modifică din când în când ori de câte ori modificați codul original. Acest lucru se aplică și fișierelor gitignore. De obicei, lista fișierelor recomandate de ignorat se găsește de obicei pe internet. Poti copiați acest esențial pe cont propriu .dockerignore .

Și dacă utilizați git, puneți acest fragment de cod în dumneavoastră .gitignore.

Cum sa va configurati mediul de dezvoltare Ruby on Rails
Aspectul folderului de proiect va arăta similar cu acesta.

Fișierele ignorate sunt puțin mai lungi de aceea am pus doar link-uri.

Fișier Dockerfile și docker-compose

Aici se întâmplă cea mai mare parte a operației. Gândiți-vă la aceste două fișiere ca la un set de instrucțiuni pe care le urmează Docker cu privire la modul de configurare a containerului virtual. Fișierul Dockerfile și docker-compose funcționează mână în mână. Puteți avea mai multe fișiere Docker pentru diferite servicii și un fișier de compunere pentru a le lega împreună.

3. Creați un fișier numit Dockerfile

Un fișier Docker este un fișier cu un set de reguli pe care le veți seta pe care le va urma dockerul. S-au găsit un set de reguli pre-construite pe hub-ul Docker. Un exemplu este instrucțiunile de instalare pre-construite pentru MySQL sau PHP sau Node.js. După ce ai făcut-o Dockerfile, puneți acest cod pe fișierul Docker. Și voi trece printr-o scurtă explicație despre ce fac aceste replici.

FROM ruby

WORKDIR /home/app

ENV PORT 3000

EXPOSE $PORT

RUN gem install rails bundler
RUN gem install rails
RUN apt-get update -qq && apt-get install -y nodejs

ENTRYPOINT [ "/bin/bash" ]
Dockerfile pe rădăcina proiectului
  • FROM ruby – acest lucru înseamnă că docker-ul va trage o configurare pre-construită de rubin. Nu trebuie să vă gândiți la actualizarea sau instalarea pe computer a celei mai recente versiuni ruby. Veți vedea lista imaginilor pre-construite ale lui Docker pe Dockerhub-ul lor. Gândiți-vă la asta ca la npm.
  • WORKDIR /home/app – Director de lucru. Directorul de lucru înseamnă că acesta este locația implicită a folderului dvs. atunci când porniți mediul de dezvoltare. Îl poți numi orice vrei.
  • ENV PORT 3000 – Variabilă de mediu. Aceasta va seta o variabilă numită $PORT pe terminalul dvs. bash să fie „3000”.
  • EXPOSE $PORT – expuneți portul 3000 (pe care l-am setat mai devreme) al containerului virtual la mașina dvs. locală.
  • RUN – Comenzile Run sunt câteva instrucțiuni de configurare pe care doriți ca terminalul să ruleze înainte de al utiliza. În cazul nostru, am instalat ruby ​​pe rails, bundler și node.js înainte de a folosi chiar și mediul de dezvoltare, așa că totul este gata când îl folosim.
  • ENTRYPOINT ["/bin/bash"]– această comandă îi spune docker-ului ce comandă să executăm când rulăm containerul. În cazul nostru, trebuie să rulăm terminalul bash, astfel încât să putem avea acces la șine.

Rețineți că aceste explicații sunt doar scurte. Puteți vedea mai multe explicații sau vă puteți face scufundările Documente de referință Dockerfile.

1612060453 706 Cum sa va configurati mediul de dezvoltare Ruby on Rails
Fișierul dvs. Docker va arăta ca așa ceva.

Puteți face fel de lucruri interesante cu Dockerfile. În cazul meu, am încercat să instalez zsh și oh-my-zsh pe containerul meu, deoarece are câteva funcții interesante de completare automată. Dar în exemplul nostru nu prea avem nevoie de el, ci va crește doar dimensiunea imaginii noastre, așa că nu am inclus-o.

4. Creați un fișier numit docker-compose.yml

Fișierul de compunere Docker este un fișier care leagă diferite servicii împreună. Un bun exemplu este atunci când vă conectați aplicația de șine la diferite servere, cum ar fi serverul de baze de date MySQL sau redis cache server. Le puteți face ușor să funcționeze cu acest fișier. Dar pentru cazul nostru, vom respecta setarea minimă în scopuri de claritate. Un fișier YAML este un tip de fișier de reducere cu diferite reguli privind modul de formatare a fișierului. Gândiți-vă la el ca la un fișier JSON, fără acolade. Pune asta în docker-compose.yml fişier.

version: "3.7"

services:
  ruby_dev:
    build: .
    container_name: ruby_container
    ports:
      - "3000:3000"
    volumes:
      - ./:/home/app
docker-compose.yml

După cum puteți vedea, arată cam ca fișierul Docker, dar cu un pic de indentare. Să trecem prin rânduri.

  • version – De-a lungul timpului, fișierul docker-compose a trecut prin modificări. De aceea, în fișierele docker-compose, trebuie să specifice ce versiune folosesc. În cazul nostru, folosim cea mai recentă versiune din acest moment.
  • services – Specificați lista serviciilor. Așa cum am spus mai devreme, puteți avea multe servicii, cum ar fi un server rails și un server MySQL în proiectul dvs. Puteți denumi serviciile dvs. orice nume doriți. L-am numit ruby_dev.
  • build: . – Punctul de aici înseamnă o cale a fișierului în care să găsiți fișierul Docker, care este instrucțiunile de construire.
  • container_name – Numele containerului.
  • ports: – acestea sunt porturile pe care trebuie să le expunem din containerul de andocare la mașina noastră locală gazdă. Modelul de aici este HOST:CONTAINER. În cazul nostru este „3000: 3000”. Ceea ce înseamnă că lăsăm portul implicit al serverului Rails (3000) să fie disponibil în „localhost: 3000” al mașinii noastre locale.
  • volumes: – volum înseamnă chiar dacă renunțăm sau ștergem Docker, putem specifica ce fișiere putem păstra în mașina noastră locală. Am pus ./:/home/app acolo pentru că am numit în fișierul nostru Docker mai devreme directorul de lucru /home/app.

Puteți vedea mai multe explicații pe Docker Compune documente de referință.

1612060453 549 Cum sa va configurati mediul de dezvoltare Ruby on Rails
Docker-compose.yml va arăta ca așa ceva.

Construirea și rularea containerului

Cu toate fișierele noastre de configurare configurate, să construim și să rulăm containerul! După o mulțime de termeni pe care i-am întâlnit, construirea și rularea containerului este mult mai simplă. Va implica doar câteva comenzi.

5. În terminalul dvs., rulați docker-compose build

Rularea acestei comenzi va primi Dockerfile și va instala toate lucrurile necesare pentru a crea un mediu de dezvoltare a șinelor. Rețineți că instalarea poate dura ceva timp, deoarece docker va trebui să descarce pachetele necesare.

6. În terminalul dvs., rulați docker-compose run --rm --service-ports ruby_dev

Această comandă va porni un terminal bash care va fi mediul dvs. de dezvoltare rails unde sunt disponibile comenzile rails. Cu doar aceste două comenzi și două fișiere de configurare, aveți deja un mediu rails fără a trece chiar printr-un jurnal de depanare! Observați că comanda noastră are câteva steaguri, --rm înseamnă să scoateți recipientul după ce îl utilizați și --service-ports înseamnă să folosiți portul 3000 în container, astfel încât să putem vedea serverul nostru de șine în acțiune. Numele ruby_dev provin, de asemenea, din serviciile găsite la docker-compose.yml.

1612060454 513 Cum sa va configurati mediul de dezvoltare Ruby on Rails
Terminalul dvs. ar putea arăta astfel după ce rulați comanda de rulare. Verificați dacă există șine rulând rails -v comanda. Versiunile pot varia.

Rulați o aplicație rails

Acum că ne-am creat cu succes mediul de dezvoltare a șinelor, vom testa un exemplu de aplicație pentru șine.

1. Aleargă rails new myapp && cd myapp

Această comandă va crea o nouă aplicație rails într-un folder numit myapp. După aceea terminalul va merge în dosar. Îl poți numi orice vrei.

2. Actualizați și instalați pietre prețioase. Alerga bundle update && bundle install

Asigurați-vă că vă aflați în folderul potrivit, în myapp, care conține fișierele aplicației rails. Această comandă vă va actualiza și instala dependențele.

3. Testați serverul rulând rails server -p $PORT -b 0.0.0.0

Vă amintiți portul pe care l-am specificat înainte în fișierul Docker? Aici îl putem folosi. În cazul nostru, șinele vor folosi portul 3000 pentru a porni serverul. Nu uitați să puneți -b 0.0.0.0 deoarece nu veți vedea aplicația pe mașina dvs. locală fără aceasta.

1612060455 85 Cum sa va configurati mediul de dezvoltare Ruby on Rails
Hello rails splash screen. Da, șine !!!

4. Opriți serverul apăsând ctrl-d pe tastatură.

A curăța

După ce ați terminat cu totul, puteți ieși din container rulând exit pe terminalul bash al containerului. --rm steagul pe care l-ați tastat anterior va elimina containerul, dar veți putea să vă păstrați rubinul pe fișiere de șine.

Alerga docker-compose down a face curat

Curățarea este când ați terminat proiectul și doriți să eliminați mediul de dezvoltare, astfel încât să puteți economisi spațiu. Dacă ați terminat cu adevărat, puteți utiliza această comandă. Docker vă va elimina toate setările și imaginile pe care le-ați descărcat. Acest lucru este atât de puternic, deoarece, imaginați-vă că ați urmat o mulțime de pași și o mulțime de instalare pe Mac. Singura modalitate de a elimina acea configurare este să le dezinstalați pe rând. Cu docker de partea noastră, este doar o comandă. Aww da!

Concluzie

Mă bucur că ai ajuns până aici! Să ne uităm la imaginea de ansamblu. Configurarea unui mediu de dezvoltare în Docker poate fi defalcat în 2 pași:

  1. Enumerați instrucțiunile de care aveți nevoie în fișierul Dockerfile și docker-compose.
  2. Porniți sau opriți sau curățați mediul dvs. de dezvoltare cu docker-compose comanda.

Acesta este un mare câștig pentru noi. Trebuie doar să păstrați fișierul Dockerfile și să compuneți fișierul și ori de câte ori schimbați mașina, rulați doar două comenzi! Configurați o dată și uitați.

Repertoriu

Puteți vedea depozitul despre cum arată configurarea și comenzile suplimentare de care aveți nevoie aici, verificând repo complet github aici.

Dacă vi se pare util articolul sau dacă aveți câteva întrebări suplimentare, aruncați-l în comentarii. Voi fi bucuros să vă ajut!

Acest articol a fost scris de Jonathan Cunanan pe Routech News.

? Stare de nervozitate -? Routech – ? Portofoliu⚛️ Github