Popularność Dockera jako narzędzia programistycznego rośnie. Docker wdychał nowe życie w ruch pojemnika. Programiści lubią go używać, ponieważ jest szybki i łatwy do nauki. Pomaga zespołom programistów dzielić standardowe środowiska, nie martwiąc się o marnowanie czasu i zasobów.
Deweloperzy mogą skonfigurować pożądane środowisko w kontenerze Docker, zapisać kontener jako obraz i łatwo udostępniać je swoim zespołom programistów. Proces działa świetnie dla jednego kontenera. Jednak środowiska wielokrotnego są trudniejsze do utrzymania. Docker Compose zapewnia rozwiązanie.
Dzięki Docker Compose, programiści mogą zdefiniować plik YAML, aby skonfigurować konfigurację dla wielu usług. Następnie mogą uruchomić usługi wielu kontaktów z jednym poleceniem. Upraszcza proces pracy z aplikacjami wielu kontaktów.
Warunek wstępny
Zakładamy, że masz podstawowe zrozumienie Dockera. W przeciwnym razie spójrz na Jak zainstalować i korzystać z Docker na Ubuntu. Przykłady używają WordPress, MySQL, Flask i Python. Jednak żadna wcześniejsza wiedza na temat tych narzędzi nie jest konieczna.
Proces komponowania dokera: na pierwszy rzut oka
- Zdefiniuj środowisko aplikacji: Użyj DockerFile, aby zdefiniować środowisko aplikacji, aby łatwo było je odtwarzać.
- Zdefiniuj środowisko komponują Docker: Użyj kompozycji Docker.YML w celu zdefiniowania usług w aplikacji.
- Uruchom aplikację: Użyj Docker-Compose w górę, aby uruchomić aplikację wielokrotną.
Przykładowy plik komponowania
Mysql_root_password: rootPassword123 |
MySQL_DATABase: WordPress |
Mysql_user: WordPress_user |
Mysql_password: WordPress_Password |
Zdjęcie: WordPress: najnowszy |
WordPress_db_host: DB: 3306 |
WordPress_db_user: WordPress_user |
WordPress_DB_Password: WordPress_Password |
Jeśli powyższy kompozycja dokera.Plik YML jest wywoływany z Docker Up, utworzy usługę WordPress, która łączy się z usługą bazy danych MySQL.
Docker komponuje polecenia
Możesz użyć Docker -Compose -Help Aby znaleźć komendę dokowania
Kiedy używać Docker Compose?
Obecnie Docker jest używany głównie w środowiskach programistycznych. Niektóre z popularnych zastosowań Docker Compose to:
1. Prototypowanie i rozwój
Proces prototypowania i rozwoju aplikacji są spowolnione z powodu braku standardowych środowisk. Deweloperzy często muszą marnować czas na konfigurowanie tego samego środowiska wiele razy. Ponadto przewodniki odczytu w celu skonfigurowania parametrów środowiska jest czasochłonne.
Docker komponuje proces upraszczania procesu. Po skonfigurowaniu środowiska zespoły programistów mogą udostępniać pliki Docker w organizacji. Może zaoszczędzić ogromny czas na problemy związane z zarządzaniem konfiguracją.
2. Testowanie i automatyzacja procesów
Ciągła integracja i ciągła dostawa (CI/CD) stają się standardowymi procesami w dzisiejszych środowiskach zwinnych. Zautomatyzowane testowanie jest ważnym elementem CI/CD. Docker Compose pomaga zdefiniować proces zautomatyzowany testowanie. Wszystkie komplikacje związane z rozpoczęciem nowych usług można starannie umieścić w plikach konfiguracyjnych Docker. Testerzy mogą używać tych plików do odpalania usług tymczasowych, uruchomienia skryptów tekstowych i niszczenia usług po zebraniu wyników testu. Oszczędza czas, ponieważ ręczne uruchamianie usług jest czasochłonne i podatne na błędy.
3. Przyszłe wdrożenie produkcji
Docker jest używany głównie w środowiskach programistycznych. Ponieważ jednak funkcje Docker stają się bardziej solidne, Docker będzie wykorzystywany do pracy na poziomie produkcyjnym. Docker Compose może być cennym narzędziem do wdrożenia pojedynczego hosta.
Ćwiczenie: prosta aplikacja internetowa
Spróbujmy w prostej aplikacji internetowej opartej na Python, aby wypróbować Docker Compose. Użyjemy frameworka Web Flask, aby utworzyć aplikację, która komunikuje się z w pamięci Redis, aby śledzić, ile razy odwiedzano aplikację internetową.
Struktura katalogu będzie wyglądać tak:
└wiąt kompozycja dokera.yml |
Powyższa struktura katalogu nie jest konieczna do podstawowej aplikacji. Pokazuje jednak, w jaki sposób organizowanie informacji mogą być pomocne w bardziej wydajnym wdrożeniu Docker Compose.
Krok 1: Utwórz strukturę i pliki katalogu
Utwórzmy strukturę katalogu i niezbędne pliki:
$ mkdir simple_app/content |
$ mkdir simple_app/content/kod |
$ Touch Simple_App/Docker-Compose.yml |
$ Touch Simple_App/content/DockerFile |
$ Touch Simple_App/content/code/simple_app.py |
$ Touch Simple_App/content/kod/wymagania.tekst |
Polecenie dotykowe tworzy tylko puste pliki. Możesz ręcznie wejść do folderów i utworzyć pliki.
Krok 2: Kod aplikacji internetowej
Folder kodu zawiera kod aplikacji internetowej. Umieść następujące Simple_App.py plik:
redis = redis (host = „redis”, port = 6379) |
Count = Redis.inclu („Hits”) |
powrót 'Witamy w Docker Compose Lessons!
Odwiedziłeś tę stronę czasy.\N'.format (liczba) |
Jeśli __name__ == "__main__": |
App.Uruchom (host = "0.0.0.0 ", debug = true) |
Powyższa aplikacja tworzy stronę powitalną wyświetlającą liczbę odwiedzin strony. Licznik wizyty jest utrzymywany w bazie danych Redis. Redis używa portu 6379 jako domyślnego portu słuchania. Następnie wypełnij wymagania.tekst plik:
Umożliwi to PIP instalację zależności Pythona od kontenera internetowego. Będziemy uruchomić PIP w ramach inicjalizacji naszej usługi.
Krok 3: Dockerfile
Wypełnij simple_app/content/dockerFile Z następującym kodem:
Uruchom wymagania instalacyjne PIP -R.tekst |
CMD [„Python”, „Simple_App.py "] |
Powyższe Dockerfile Osiąga następujące czynności:
- Tworzy obraz z Pythona: 3.6.3-Jessie. Jeśli nie jest dostępny lokalnie, pobiera go z Docker Hub.
- Kopiuje elementy simple_app/content/kod do /kod na pojemniku
- Ustawić /kod Jako katalog roboczy na kontenerze
- Używa PIP do instalacji zależności Pythona
- Ustawia domyślny punkt początkowy dla kontenera do uruchomienia Python Simple_App.py.
Krok 4: Docker komponuje
Wypełnij Simple_App/Docker-Compose.yml Plik z następującym kodem:
Kompozycja dokera.yml Plik definiuje dwa kontenery: Web i Redis. Używa Docker komponuj format wersji 3.
Dla usługi internetowej:
- Buduje usługę internetową za pomocą simple_app/content/dockerFile
- Przekaż port 5000 z kontenera internetowego do portu hosta 5000. Port 5000 to domyślny port dla aplikacji kolb.
- Tom simple_app/content/kod jest zamontowany jako /kod na pojemniku. Oznacza to, że jeśli coś zmienisz w simple_app/content/kod, zostanie odzwierciedlone w /kod folder w pojemniku internetowym.
Dla usługi Redis:
- Używa obrazu Redis: Alpine z Docker Hub, aby utworzyć usługę Redis.
Krok 5: Uruchamianie aplikacji za pomocą Docker Compose
Aplikacja jest gotowa do wdrożenia. Z Simple_App Folder, uruchom następujące polecenie:
Wyjście powinno zacząć się w ten sposób:
Krok 1/5: Od Pythona: 3.6.3-Jessie |
3.6.3-Jessie: pobieranie z biblioteki/Pythona |
85B1F47FBA49: Pobieranie [===========>] 12.43 MB/52.6 MB |
5409e9a7fa9e: Pobierz kompletnie |
661393707836: Pobieranie [===============>] 13.71 MB/43.23 MB |
1BB98C08D57E: Pobieranie [>] 1.081 MB/134.7 MB |
Po zbudowaniu i uruchomieniu wszystkich obrazów należy zobaczyć następujące:
Status: Pobrane nowsze zdjęcie dla Redis: Alpine |
Tworzenie SimpleApp_redis_1… |
Tworzenie SimpleApp_Web_1… |
Tworzenie SimpleApp_redis_1 |
Tworzenie SimpleApp_Web_1… gotowe |
Dołączenie do SimpleApp_redis_1, Simpleapp_Web_1 |
redis_1 | 1: M 21 października 02:06:33.639 * Gotowy do przyjęcia połączeń |
Web_1 | * Uruchomienie na http: // 0.0.0.0: 5000/ (naciśnij Ctrl+C, aby rzucić) |
Web_1 | * Ponowne uruchomienie za pomocą STAT |
Web_1 | * Debugger jest aktywny! |
Web_1 | * PIN DEBUGGER: 237-189-083 |
Możesz przetestować aplikację, przechodząc na http: // localhost: 5000:. Jeśli odświeżasz stronę kilka razy, powinna ona odzwierciedlać liczbę wizyt. Możesz sprawdzić status działających usług lub kontenerów:
Polecenie obrazu ID kontenera utworzone porty statusu nazwy |
22852E0AD98A REDIS: Alpine „Docker-Enrypoint…” 5 minut temu w górę 5 minut 6379/TCP Simpreapp_redis_1 |
D51739D0A3AC Simpleapp_Web „Python Simple_App.py "5 minut temu w górę 5 minut 0.0.0.0: 5000-> 5000/TCP SimplaPP_Web_1 |
Jeśli uruchomisz powłokę bash w Simpleapp_Web_1 (nazwa kontenera może się różnić), zostaniesz zalogowany do działającego katalogu /kodu:
$ Docker Exec -it Simpleapp_Web_1 Bash |
root@D51739D0A3AC:/kod# ls |
wymagania.TXT Simple_App.py |
/kod katalog powinien odzwierciedlać treść simple_app/content/kod wewnątrz, jak widać powyżej (Simple_App.py I wymagania.tekst).
Jeśli zaktualizujesz swoje Simple_App.pyLinia od:
powrót 'Witamy w Docker Compose Lessons!
Odwiedziłeś tę stronę czasy.\N'.format (liczba) |
Do:
powrót 'Witamy w Docker Compose Lessons!
Czy jesteś zaintrygowany?
Odwiedziłeś tę stronę czasy.\N'.format (liczba) |
Powinien zastanowić się nad http: // localhost: 5000:
Krok 6: Zamknięcie usług
Możesz zatrzymać aplikację za pomocą:
Zatrzymanie SimpleApp_redis_1… gotowe |
Zatrzymanie Simpleapp_Web_1… gotowe |
Zamontowane tomy będą trwać. Możesz całkowicie usunąć pojemniki, w tym objętości za pomocą następującego polecenia.
$ Docker-Compose Down-volume |
Usuwanie SimpleApp_redis_1… gotowe |
Usuwanie SimpleApp_Web_1… gotowe |
Usuwanie sieci SimpleApp_Default |
Gratulacje! Opanowałeś podstawy Docker Compose.
Dalsze badanie
Aby uzyskać dalsze badania, spójrz na następującą dokumentację:
- Dokumentacja Dockera
- Docker Compose File Reference
- Docker komponuje sieci sieciowe
Bibliografia:
- https: // dokumenty.doker.com/compose/przegląd/#środowiska rozwoju
- https: // dokumenty.doker.com/compose/dostanie się/
- https: // blog.Codeship.com/orkiestrate-containers-for-rozwój-z-docker-kompose/
- https: // www.sumologiczne.com/blog/devops/indic-to-to-build-applications-docker-compose/
- https: // dokumenty.doker.com/compose/wordpress/#definiuj-projekt