Rails 5.1 konfiguracja Dockera – part 4

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.