Start/zbudowanie środowiska
Zaby wystartować środowisko, należy w katalogu głównym aplikacji odpalić
docker-compose -f config/docker/docker-compose.yml up -d
Polecenie jest na tyle uniwersalne, że powinno nam przebudować obraz tylko kiedy to jest potrzebne i wystartować aplikacje, ewentualnie podpowiedzieć co należy zrobć.
Warto znać również polecenia do startu, zatrzymania, oraz przebudowania istniejących obrazów. Konfiguracje dockera będziemy przecież zmieniać podczas naszej codziennej pracy.
docker-compose -f config/docker/docker-compose.yml build # przebudowuje obraz docker-compose -f config/docker/docker-compose.yml start # startuje containery docker-compose -f config/docker/docker-compose.yml stop # zatrzymuje containery
Logowanie do containerów
Warto mieć otwarte stale cztery zakładki:
- – proces serwera dla railsów
- – proces serwera dla webpack-a
- – konsole dla railsów
- – pustą zakładke dla wykonywania testów i innych poleceń
Wszystkie powyższe zakładki są odpalone w środku containera ‘docker_server_1’
docker exec -it docker_server_1 /bin/bash rails s
docker exec -it docker_server_1 /bin/bash ./bin/webpack-dev-server
docker exec -it docker_server_1 /bin/bash rails c
docker exec -it docker_server_1 /bin/bash
Git
Nic nie stoi na przeszkodzie aby dodać git-a do naszego Dockerfile. Jednak trzeba pamiętać, że jesli bedziemy chcieli aby git komunikował się z githubem to musimy to odpowiednio skonfigurować. Osobiście wole korzystać z git-a zainstalowanego na lokalnej maszynie. Tak jest dla mnie poprostu łatwiej, szczególnie że każdy programista ma zainstalowanego git-a.
Deploy na produkcje
Jest wiele możliwości aby przeprowadzić deploy, każda ma swoje wady i zalety. Opisanie ich jest zbyt obszerne i wymaga odrębnego posta.
- Deploy z pominięcien dockera przy pomocy Capistrano/Mina
- Ograniczony deploy przy pomocy capistrano/mina następnie zbudowanie dockera w katalogu current
- Uzycie pluginu do Capistrano capistrano-docker
- Użycie Capistrano/Mina do wykonania poleceń skopiowania plików i zbudowania obrazu
- Wykorzystanie docker-machine
- Zbudowanie obrazu/obrazów na osobnym dodatkowym serwerze, wypchnęcie obrazu a następnie pobranie i uruchomienie obrazu na serwrze docelowym
Podsumowanie
Flow pracy jakie opisałem z Dockerem, doskonale sprawdziło się w praktyce. Każda nowo dołączona osoba do teamu stawiała środowisko w ciągu minut. Dodawanie nowych zależności było również bezproblemowe. Jedna osoba modyfikowała Dockefile i wszystko u wszystkich dzałało.