Środowisko deweloperskie dla PrestaShop – Docker

W 2018 roku wszyscy kochają Dockera 🙂 ja też go bardzo polubiłem bo rozwiązuje masę problemów web deweloperom. W tym mini poradniku pokaże jak szybko dzięki niemu przygotować sobie środkowo pracy z silnikiem PrestaShop.

Jeśli do tej pory jeszcze nie korzystałeś z Dockera pewnie zastanawiasz się co takiego super daje nam to narzędzie że wszyscy z niego korzystają i dlaczego miałbyś zmienić obecne środowisko pracy. Dla mnie największe zalety to:

  1. Izolacja systemu od środowiska deweloperskiego
  2. Możliwość przechowywania i odtwarzanie z repozytorium całego środowiska a nie tylko kodu projektu
  3. SZYBKOŚĆ tworzenie nowego środowiska do pracy - automatyzacja

Przykładowo mamy do napisania moduł, prosta sprawa. Instalujemy sobie apache, PHP, mysql itd. potem pobieramy i instalujemy PrestaShop. Pracujemy nad kodem... okazuje się że moduł ma działać również na PS 1.4 więc pobieramy i instalujemy... ale hola! PS 1.4 nie działa bo mamy PHP 7.1... trzeba doinstalować 5.6 i skonfigurować apache, później chcemy pracować na laptopie więc wszystko konfiguruje jeszcze raz.. MASAKRA. A to parzcież jeden z wielu projektów, i tutaj przychodzi nam do pomocy Docker.

Instalacja (na Linux MINT 18.3) jest bardzo prosta, a jeśli nie chce wam się klepać komend mam gotowca:

sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates -y
sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
sudo echo deb https://apt.dockerproject.org/repo ubuntu-xenial main >> /etc/apt/sources.list.d/docker.list
sudo apt-get update
sudo apt-get purge lxc-docker
sudo apt-get install linux-image-extra-$(uname -r) -y
sudo apt-get install docker-engine cgroup-lite apparmor -y

# Install docker-compose
sudo curl -L https://github.com/docker/compose/releases/download/1.19.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

sudo usermod -a -G docker $USER
sudo service docker start

 

Kiedy mamy już Dockera nic więcej nie jest nam potrzebne, wystarczy stworzyć plik z konfiguracją dla docker-compose, poniżej przykładowy:

version: '3.3'

services:
   db:
     image: mysql:5.7
     volumes:
       - /var/lib/mysql
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: admin
       MYSQL_DATABASE: ps
       MYSQL_USER: ps
       MYSQL_PASSWORD: ps

   prestashop:
     depends_on:
       - db
     image: prestashop/prestashop:1.7.2.4
     ports:
       - "8080:80"
     restart: always
     environment:
       PS_INSTALL_AUTO: 0
       PS_ERASE_DB: 0
       DB_SERVER: db
       DB_USER: ps
       DB_PASSWD: ps
       DB_NAME: ps
       PS_DEV_MODE: 0
       PS_DOMAIN: localhost:8080
       PS_FOLDER_ADMIN: admin123
       PS_FOLDER_INSTALL: install123
     volumes:
       - /var/www/html
       - ./my_module:/var/www/html/modules/my_module
       - ./my_theme:/var/www/html/themes/my_theme
       - ./override:/var/www/html/override

 

W nim jest cała magia, tworzymy dwa kontenery pierwszy to db dla bazy danych, tworzymy wolumin /var/lib/mysql aby nasza baza nie zniknęła po zatrzymaniu kontenera oraz tworzymy pustą bazę o nazwie ps dla naszej instalacji prestashop.

Kolejny kontener to już sam prestashop, podajemy dane naszej bazy, mapujemy port, tworzymy wolumin /var/www/html aby nasz PrestaShop nie znikał przy zatrzymaniu kontenera, i to wszystko. Ja dodatkowo ustawiam zmienne PS_FOLDER_ADMINPS_FOLDER_INSTALL aby po instalacji nie musieć  zmieniać ręcznie domyślnych nazw. Jest też ciekawa opcja PS_INSTALL_AUTO która automatycznie instaluje sklep ale na najnowszej wersji PS niestety nie działa.

Mapujemy też sobie katalogi jeśli piszemy moduł czy szablon i override jeśli modyfikujemy działanie silnika.

- ./my_module:/var/www/html/modules/my_module
- ./my_theme:/var/www/html/themes/my_theme
- ./override:/var/www/html/override

Oczywiście to tylko przykład i możliwości konfiguracji jest znacznie więcej ale to wystarczy żeby szybko postawić sobie sklep testowy. Kiedy mamy wszystko gotowe w terminalu wpisujemy:

docker-compose up

i po kilku chwilach mamy działające środowisko pracy. Aby uruchomić instalator PrestaShop przechodzimy w przeglądarce na stronę: http://localhost:8080/install123

Na moim github'ie repo z tym prostym środowiskiem. Postaram się je w przyszłości rozbudować nieco 🙂

Dodatkowe informacje:

2 komentarze do “Środowisko deweloperskie dla PrestaShop – Docker”

  1. Widzę na github, że masz jeszcze dodany phpmyadmin i ustawiony port 8181:80. Mógłbyś napisać kilka zdań o co chodzi z tymi portami?

    1. Port pierwszy to port który zostanie przypisany do twojego localhosta, czyli w przeglądarce wchodzisz pod ten pierwszy, z kolei drugi to port który jest mapowany dla kontenera. Wchodząc u siebie na 8181 kontener myśli że wchodzisz na 80.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *