Mam przeczucie, że docker może znacznie usprawnić mój przepływ pracy w webdevie - ale nie udało mi się dokładnie wyjaśnić, jak podejść do projektu dodającego docker do stosu.
Podstawowy stos oprogramowania wyglądałby następująco:
Oprogramowanie
Obraz (y) platformy Docker udostępniający niestandardowy stos LAMP
- Apache z kilkoma modułami
- MYSQL
- PHP
- Niektóre CMS, np. Silverstripe
GIT
Przepływ pracy
Mogłem sobie wyobrazić przepływ pracy wyglądający mniej więcej tak:
Rozwój
- Napisz a,
Dockerfilektóry definiuje pojemnik LAMP spełniający powyższe wymagania- REQ: Maszyna powinna uruchomić apache / mysql zaraz po uruchomieniu
- Zbuduj obraz dockera
- Skopiuj pliki wymagane do uruchomienia CMS np
~/dev/cmsdir- Poddaj się
~/dev/cmsdir/kontroli wersji
- Poddaj się
- Uruchom kontener Dockera i w jakiś sposób podłącz
~/dev/cmsdirgo/var/www/do kontenera - Wypełnij bazę danych
- Pracuj w
/dev/cmsdir/ - Zatwierdź i zamknij kontener Dockera
Rozlokowanie
- Skonfiguruj zdalnego hosta (np. Z ansible)
- Wypchnij obraz kontenera do zdalnego hosta
- Pobierz
cmsdir-project przez git - Uruchom kontener Docker, ściągnij bazę danych i zamontuj
cmsdirdo/var/www
Na papierze to wszystko wygląda całkiem nieźle, ALE nie jestem do końca pewien, czy w ogóle byłoby to właściwe podejście.
Pytania:
Podczas tworzenia lokalnego, w jaki sposób mogę sprawić, aby baza danych zachowała się między ponownymi uruchomieniami instancji kontenera? A może musiałbym za każdym razem uruchamiać sql-dump przed zakręceniem kontenera?
Czy powinienem mieć oddzielne instancje kontenera dla bazy danych i serwera Apache? A może wystarczyłoby mieć jeden pojemnik na powyższy przypadek użycia?
Jeśli używasz oddzielnych kontenerów dla bazy danych i serwera, w jaki sposób mógłbym zautomatyzować ich jednoczesne włączanie i wyłączanie?
Jak właściwie zamontować
/dev/cmsdir/w katalogu-kontenery/var/www/? Czy powinienem do tego wykorzystać woluminy danych ?Czy przegapiłem jakieś pułapki? Coś, co można uprościć?