Docker Drupal Droptica

Poznaj aplikację docker-drupal w 15 minut

Wielokrotnie wspominaliśmy, że w Droptica używamy Dockera oraz aplikacji docker-drupal (https://github.com/droptica/docker-drupal). Pokażemy tutaj jak szybko zapoznać się z naszą aplikacją i jak rozpocząć pracę z Dockerem i Drupal 8.


W naszej agencji drupalowej pracujemy na systemie operacyjnym Linux, głównie na Ubuntu, dlatego opis ten będzie dotyczył Ubuntu 16.04. Jeśli nie masz na swoim komputerze systemu Ubuntu, to możesz użyć VirtualBox, aby go uruchomić bez konieczności instalacji nowego systemu bezpośrednio na swoim komputerze.


VirtualBox można pobrać ze strony https://www.virtualbox.org/wiki/Downloads, natomiast obraz ISO Ubuntu 16.04 jest dostępny na stronie http://releases.ubuntu.com/16.04/ (64-bit PC (AMD64) desktop image).


Zakładamy, że mamy dostępny system Ubuntu 16.04 (na VirtualBox lub bezpośrednio na swoim komputerze).


Instalacja Dockera

Instalacja dockera i docker-compose to wykonanie poniższych komend:

wget -qO- https://get.docker.com/ | sh
sudo usermod -aG docker $(whoami)
sudo apt-get -y install python-pip
sudo pip install docker-compose
mkdir hello-world
cd hello-world
nano docker-compose.yml


W pliku docker-compose.yml wstawiamy treść:

my-test:
  image: hello-world


Po tej operacji uruchamiamy ponownie komputer. Następnie w konsoli przechodzimy do katalogu hello-world i uruchamiamy testowy kontener dockera poleceniem:
 

docker-compose up


Powinniśmy otrzymać wynik jak na zrzucie ekranu:

Docker compose up

 


Docker-drupal

Docker-drupal to aplikacja konsolowa, którą instalujemy w naszym systemie Ubuntu (aplikacja powinna działać pod dowolnym systemem typu Linux). Po instalacji będziemy mieli dostęp do nowego polecenia w konsoli. Docker-drupal potrzebuje przed instalacją kilku dodatkowych pakietów. Aby je zainstalować, wpisujemy komendy:

sudo apt-get install python-yaml python-setuptools python-pip python-dev build-essential
sudo pip install python-dotenv


Teraz możemy rozpocząć instalację docker-drupal:

cd
git clone https://github.com/droptica/docker-drupal.git
cd docker-drupal
git checkout v0.1_2016-07-19
sudo python setup.py install


To już koniec procesu instalacji, po tych krokach powinno być dostępne nowe polecenie w konsoli: docker-drupal

Docker drupal


Drupal 8 uruchomiony za pomocą docker-drupal

Aplikacja docker-drupal ma wiele możliwości (komend). W tym wpisie skoncentrujemy się na najprostszym użyciu aplikacji. Do tego celu przygotowaliśmy prostą stronę internetową opartą o Drupala 8:

  • repozytorium strony https://github.com/droptica/docker-drupal-project-example
  • zrzut bazy danych  https://www.dropbox.com/s/fjhddfekjxo2umw/database.sql.tar.gz
  • paczka plików https://www.dropbox.com/s/gqzm1g2qz78gkxi/files.tar.gz
     


Uruchomienie przykładowej strony wymaga następujących kroków:

cd
git clone https://github.com/droptica/docker-drupal-project-example.git
cd docker-drupal-project-example
cd databases
wget https://www.dropbox.com/s/fjhddfekjxo2umw/database.sql.tar.gz
cd ../files
wget https://www.dropbox.com/s/gqzm1g2qz78gkxi/files.tar.gz
cd ..
docker-drupal up


Przy pierwszym uruchomieniu komendy "up" docker będzie pobierał obraz z zewnętrznych serwerów. Ten krok może potrwać od kilku do kilkunastu minut, zależnie od prędkości łącza internetowego.

Docker


Po tej komendzie sprawdzamy, czy kontenery zostały uruchomione poleceniem "docker ps"

Docker


Jeśli wszystko przebiegło poprawnie, powinniśmy mieć uruchomione 4 kontenery:

  • web: apache i PHP
  • mysql
  • phpmyadmin
  • maicatcher: do przechwytywania e-maili


Teraz możemy już zbudować stronę na działających kontenerach. W tym celu wpisujemy komendę:
 

docker-drupal build


W tym przykładowym projekcie budowanie składa się z następujących kroków:

  • czyszczenie bazy danych
  • import bazy danych
  • rozpakowanie plików
  • zmiana ustawień SMTP aby e-maile wychodziły do dockera
  • aktualizacja bazy (drush updb)
  • wygenerowanie linku do logowania (drush uli)


Strona jest zbudowana, możemy ją podejrzeć, wchodząc na adres IP kontenera. Sprawdzenie adresu IP wykonujemy komendą "inspect"

docker inspect dockerdrupalprojectexample_web_1 | grep IPA

Docker

W moim przypadku był to adres http://172.17.0.5/ (adres może być różny zależnie od działających kontenerów).

Docker


Za pomocą docker inspect można zobaczyć IP innych kontenerów i otworzyć w przeglądarce  phpmyadmin albo do mailcatcher.


Drush w Docker

Ponieważ nasza strona internetowa jest uruchomiona wewnątrz Dockera, więc drusha też musimy używać wewnątrz dockera. Aby to ułatwić, przygotowaliśmy specjalny obraz (droptica/drupal-dev), który pozwala na zarządzanie serwisem przez Drusha w Dockerze. Wystarczy wpisać poniższą komendę, aby otrzymać możliwość używania drusha:

docker-drupal shell -s
cd app
drush status


Podsumowanie

W ten sposób mamy szybko postawiony projekt oparty o Dockera i docker-drupal. Wpis ten nie opisuje wszystkich możliwości docker-drupal. W miarę dostępnego czasu będziemy pisać więcej o docker-drupal. Warto także obejrzeć wideo z DrupalCamp Wrocław 2016 na temat docker-drupal, gdzie aplikacja jest dokładniej omówiona https://www.youtube.com/watch?v=MUINiGuIPrg