Dockers popularitet som utviklingsverktøy øker. Docker har pustet nytt liv i containerbevegelsen. Utviklere liker å bruke det fordi det er raskt og lett å lære. Det hjelper utviklingsteamene med å dele standardmiljøer uten å bekymre deg for å kaste bort tid og ressurser.
Utviklere kan sette opp ønsket miljø i en Docker -beholder, lagre beholderen som et bilde og dele det enkelt med utviklingsteamene sine. Prosessen fungerer bra for en enkelt beholder. Imidlertid er miljøer med flere container vanskeligere å opprettholde. Docker Compose gir løsningen.
Med Docker Compose kan utviklere definere en YAML -fil for å konfigurere konfigurasjonen for flere tjenester. Da kan de starte multi-container-tjenestene med en enkelt kommando. Det forenkler prosessen med å jobbe med multi-container applikasjoner.
Forutsetning
Vi antar at du har en grunnleggende forståelse av Docker. Ellers, se på Hvordan installere og bruke Docker på Ubuntu. Eksemplene bruker WordPress, MySQL, Kolbe og Python. Imidlertid er ingen forkunnskaper om disse verktøyene nødvendig.
Docker -komponeringsprosess: på et øyeblikk
- Definer applikasjonsmiljø: Bruk Dockerfile for å definere appmiljøet for å gjøre det enkelt reproduserbar.
- Definer Docker Compose Environment: Bruk Docker-Compose.YML for å definere tjenestene i applikasjonen.
- Kjør applikasjon: Bruk Docker-Compose Up for å kjøre Multi-Container-applikasjonen.
Eksempel Docker komponerer fil
Mysql_root_password: rootpassword123 |
Mysql_database: WordPress |
Mysql_user: wordpress_user |
Mysql_password: wordpress_password |
WordPress_DB_HOST: DB: 3306 |
Wordpress_db_user: wordpress_user |
WordPress_DB_Password: WordPress_Password |
Hvis ovennevnte docker-komponering.YML -filen blir påkalt med Docker Up, den vil opprette en WordPress -tjeneste som kobles til en MySQL -databasetjeneste.
Docker komponerer kommandoer
Du kan bruke Docker -Compose -hjelp For å finne Docker Compose -kommandoen
Når skal du bruke Docker Compose?
For øyeblikket brukes Docker hovedsakelig i utviklingsmiljøer. Noen av de populære bruksområdene til Docker -komponering er:
1. Prototyping og utvikling
Bruksprototyping og utviklingsprosess bremses på grunn av mangelen på standardmiljøer. Utviklere må ofte kaste bort tid på å sette opp det samme miljøet flere ganger. Å lese guider for å sette opp miljøparametere er også tidkrevende.
Docker Compose forenkler prosessen. Når et miljø er konfigurert, kan utviklingsteam dele Docker -filene i hele organisasjonen. Det kan spare en enorm mengde tid bortkastet på konfigurasjonsadministrasjonsproblemer.
2. Testing og automatisering av prosesser
Kontinuerlig integrasjon og kontinuerlig levering (CI/CD) blir standardprosesser i dagens smidige utviklingsmiljøer. Automatisert testing er en viktig komponent i CI/CD. Docker Compose hjelper med å definere den automatiserte testprosessen. Alle komplikasjonene ved å starte nye tjenester kan settes pent i Docker -konfigurasjonsfiler. Testere kan bruke disse filene til å skyte opp midlertidige tjenester, kjøre tekstskript og ødelegge tjenestene etter å ha samlet testresultatene. Det sparer tid fordi manuelt starttjenester er tidkrevende og feilutsatt.
3. Fremtidig produksjonsdistribusjon
Docker brukes hovedsakelig i utviklingsmiljøer. Når Docker-funksjonalitetene blir mer robuste, vil Docker imidlertid bli brukt til mer arbeidsnivåarbeid. Docker Compose kan være et verdifullt verktøy for distribusjoner med en vert.
Trening: En enkel webapplikasjon
La oss prøve hånden på en enkel Python -basert webapplikasjon for å prøve Docker Compose. Vi vil bruke Flask Web Framework for å opprette en applikasjon som kommuniserer med en databasedatabase Redis for å holde rede på hvor mange ganger webapplikasjonen er besøkt.
Katalogstrukturen vil se slik ut:
Katalogstrukturen ovenfor er ikke nødvendig for en grunnleggende applikasjon. Imidlertid viser det hvordan organisering av informasjon kan være nyttig for mer effektiv implementering av Docker -komponering.
Trinn 1: Lag katalogstruktur og filer
La oss lage katalogstrukturen og de nødvendige filene:
$ mkdir simple_app/innhold |
$ mkdir simple_app/innhold/kode |
$ Touch Simple_App/Docker-Compose.yml |
$ touch simple_app/content/dockerfile |
$ Touch Simple_App/Content/Code/Simple_App.py |
$ Touch simple_app/innhold/kode/krav.tekst |
Touch -kommandoen er bare å lage tomme filer. Du kan gå inn i mappene manuelt og opprette filene.
Trinn 2: Nettapplikasjonskode
Kodemappen inneholder webapplikasjonskoden. Sett følgende inn Simple_app.py fil:
Redis = Redis (vert = 'Redis', port = 6379) |
Count = Redis.incr ('treff') |
komme tilbake 'Velkommen til Docker komponerer leksjoner!
Du har besøkt dette nettstedet ganger.\ n '.Format (tell) |
if __name__ == "__main__": |
app.løp (vert = "0.0.0.0 ", debug = sant) |
Ovennevnte applikasjon oppretter en velkomstside som viser antall ganger siden er besøkt. Besøkdisken opprettholdes i en Redis -database. Redis bruker port 6379 som standard lytteport. Neste, fyll ut krav.tekst fil:
Dette vil gjøre det mulig for PIP å installere Python -avhengigheter på nettbeholderen. Vi vil kjøre Pip som en del av å initialisere tjenesten vår.
Trinn 3: Dockerfile
Fyll simple_app/content/dockerfile med følgende kode:
Kjør Pip Install -r -krav.tekst |
Cmd ["python", "simple_app.py "] |
Ovennevnte Dockerfile oppnår følgende:
- Oppretter et bilde fra Python: 3.6.3-Jessie. Hvis den ikke er tilgjengelig lokalt, laster den ned den fra Docker Hub.
- Kopierer elementer i simple_app/innhold/kode inn i /kode på beholderen
- Sett /kode som arbeidskatalog på beholderen
- Bruker PIP for å installere Python -avhengighetene
- Angir standard utgangspunkt for at beholderen skal kjøre Python Simple_app.py.
Trinn 4: Docker komponerer
Fyll simple_app/docker-compose.yml fil med følgende kode:
De Docker-Compose.yml Fil definerer to containere: Web og Redis. Den bruker Docker Compose versjon 3 -format.
For webtjenesten:
- Bygger webtjenesten ved hjelp av simple_app/content/dockerfile
- Fremover port 5000 fra nettbeholderen til Host's Port 5000. Port 5000 er standardport for kolbeapplikasjoner.
- Volum simple_app/innhold/kode er montert som /kode på beholderen. Det betyr at hvis du endrer noe i simple_app/innhold/kode, det vil gjenspeiles i /kode mappe på nettbeholderen.
For Redis -tjenesten:
- Bruker Redis: Alpine Image fra Docker Hub for å lage Redis -tjenesten.
Trinn 5: Kjørende applikasjoner ved hjelp av Docker -komponering
Søknaden er klar for distribusjon. Fra Simple_app mappe, kjør følgende kommando:
Utgangen skal starte slik:
Trinn 1/5: Fra Python: 3.6.3-Jessie |
3.6.3-Jessie: Trekk fra bibliotek/Python |
85B1F47FBA49: Last ned [===========>] 12.43MB/52.6MB |
5409e9a7fa9e: Last ned komplett |
661393707836: Last ned [===============>] 13.71MB/43.23MB |
1BB98C08D57E: Last ned [>] 1.081MB/134.7MB |
Når alle bildene er bygget og kjører, bør du se følgende:
Status: Lastet ned nyere bilde for Redis: Alpine |
Opprette SimpleApp_redis_1 .. |
Opprette SimpleApp_Web_1 .. |
Opprette SimpleApp_redis_1 |
Opprette SimpleApp_web_1 ... ferdig |
Fest til SimpleApp_Redis_1, SimpleApp_Web_1 |
redis_1 | 1: M 21. oktober 02:06:33.639 * Klar til å godta tilkoblinger |
web_1 | * Kjører på http: // 0.0.0.0: 5000/ (trykk CTRL+C for å slutte) |
web_1 | * Omstart med stat |
web_1 | * Debugger er aktiv! |
web_1 | * Debugger Pin: 237-189-083 |
Du kan teste applikasjonen ved å gå til http: // localhost: 5000:. Hvis du oppdaterer siden noen ganger, bør den gjenspeile antall besøk. Du kan sjekke statusen til tjenester eller containere som kjører:
Container ID Image Command opprettet statusporter navn |
22852e0ad98a Redis: Alpine "Docker-Entrypoint ..." for 5 minutter siden opp 5 minutter 6379/TCP SimpleApp_Redis_1 |
d51739d0a3ac simpleapp_web "python simple_app.py "for 5 minutter siden opp 5 minutter 0.0.0.0: 5000-> 5000/TCP SimpleApp_Web_1 |
Hvis du starter et bash -skall i SimpleApp_Web_1 (containernavnet ditt kan variere), vil du bli logget inn på arbeidskatalogen /koden:
$ docker exec -it simpleapp_web_1 bash |
root@d51739d0a3ac:/kode# ls |
De /kode Katalogen skal gjenspeile innholdet i simple_app/innhold/kode inni den som vist over (Simple_app.py og krav.tekst).
Hvis du oppdaterer din Simple_app.pysin linje fra:
komme tilbake 'Velkommen til Docker komponerer leksjoner!
Du har besøkt dette nettstedet ganger.\ n '.Format (tell) |
Til:
komme tilbake 'Velkommen til Docker komponerer leksjoner!
Er du fascinert?
Du har besøkt dette nettstedet ganger.\ n '.Format (tell) |
Det skal reflektere over http: // localhost: 5000:
Trinn 6: Slå av tjenestene
Du kan stoppe applikasjonen ved å bruke:
Stopper SimpleApp_redis_1 ... ferdig |
Stopper SimpleApp_Web_1 ... ferdig |
De monterte volumene vil vedvare. Du kan fjerne containerne helt inkludert volumene ved å bruke følgende kommando.
$ Docker-Compose Down-Volume |
Fjerne SimpleApp_redis_1 ... ferdig |
Fjerne simpleApp_web_1 ... ferdig |
Fjerne nettverk SimpleApp_Default |
Gratulerer! Du har mestret det grunnleggende om Docker Compose.
Videre studier
For videre studier, se på følgende dokumentasjon:
- Docker -dokumentasjon
- Docker komponerer filreferanse
- Docker komponerer nettverk
Referanser:
- https: // dokumenter.Docker.com/komponering/oversikt/#utviklingsmiljøer
- https: // dokumenter.Docker.com/komponer/getstarted/
- https: // blogg.Kodeship.com/orkestrate-containers-for-utvikling-med-docker-kompose/
- https: // www.sumologisk.com/blogg/devops/how-to-build-applications-docker-compose/
- https: // dokumenter.Docker.com/compose/wordpress/#definer-the-project