Skip to main content

Drupal 8 vývoj s Dockerem na OSX

Tento nástroj zlepšuje Drupal, zvyšuje výkon našich webových stránek a rovněž zvyšuje rychlost vývoje.
Veli Akçakaya
Veli Akçakaya
5 min. read
osxte-docker-ile-drupal-8-gelistirme

Starý způsob vývoje webu v Drupalu obvykle vypadá takto: nahráli jste svůj zdrojový kód Drupalu na sdílený hosting a poté konfigurovali váš server Apache. Následně jste prováděli změny pomocí FTP a občas jste udělali zálohu databáze MySQL jen pro jistotu. Tyto časy jsou pryč. V roce 2019 existuje mnoho nástrojů a osvědčených postupů, které nám umožňují efektivně vyvíjet a udržovat webovou stránku v Drupalu a škálovat se mezi různými týmy a infrastrukturami. Vývoj v Drupalu s těmito nástroji umožňuje naší webové stránce dosahovat lepších výsledků a zvyšuje také rychlost vývoje.

Požadované Aplikace

  • Apache
  • Composer
  • Docker
  • Docker Compose
  • Drupal 8
  • Drush
  • Git
  • MariaDB or MySQL
  • PHP7

Docker

Instalace Dockeru s Homebrew na OSX je velmi jednoduchá. Pokud není Homebrew nainstalován, můžete jej nainstalovat pomocí následujícího příkazu v příkazovém řádku.

$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Po instalaci Homebrew nainstalujte Docker následujícím příkazem.

$ brew install docker
$ brew cask install docker // GUI interface for Docker

Projekt

Pro tento blogový příspěvek vytvoříme blog založený na Drupalu nazvaný "MyBloge".

$ mkdir -p ~/Project/my-bloge
$ cd ~/Project/my-bloge

Vytvoření Dockerfile

Dockerfile je textový dokument obsahující všechny příkazy, které uživatel může vyhledat z příkazové řádky k vytvoření obrazu.

$ touch ~/Project/my-bloge/Dockerfile

Naplněte Dockerfile následujícím obsahem:

FROM drupal:8.6-apache

RUN apt-get update && apt-get install -y \
    curl \
    git \
    mysql-client \
    vim \
    wget

RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" && \
    php composer-setup.php && \
    mv composer.phar /usr/local/bin/composer && \
    php -r "unlink('composer-setup.php');"

RUN wget -O drush.phar https://github.com/drush-ops/drush-launcher/releases/download/0.4.2/drush.phar && \
    chmod +x drush.phar && \
    mv drush.phar /usr/local/bin/drush

RUN rm -rf /var/www/html/*

COPY apache-drupal.conf /etc/apache2/sites-enabled/000-default.conf

WORKDIR /app

Popis

  • Toto je oficiální obraz knihovny Docker pro Drupal. Při použití tohoto obrazu není nutné konfigurovat Apache a PHP.

FROM drupal:8.6-apache
  • Instalujeme potřebné aplikace pro vývoj v Drupalu v obraze Docker
RUN apt-get update && apt-get install -y \
    curl \
    git \
    mysql-client \
    vim \
    wget
  • Poté nainstalujeme Composer následujícím příkazem:
RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" && \
php composer-setup.php && \
mv composer.phar /usr/local/bin/composer && \
php -r "unlink('composer-setup.php');"
  • Nastavujeme Drush:
RUN wget -O drush.phar https://github.com/drush-ops/drush-launcher/releases/download/0.4.2/drush.phar && \
chmod +x drush.phar && \
mv drush.phar /usr/local/bin/drush
  • Mažeme existující instalaci Drupalu v obraze Dockeru. Drupal nainstalujeme pomocí Composeru.
RUN rm -rf /var/www/html/*
  • Apache Conf.
COPY apache-drupal.conf /etc/apache2/sites-enabled/000-default.conf

Zde synchronizujeme soubor apache-drupal.conf na lokálním stroji se souborem 000-default.conf v obraze. Změny provedené ve souboru apache-drupal.conf se automaticky promítnou do souboru 000-default.conf v obraze.

Vytvořte konfigurační soubor Apache VHost

Vytvořte soubor apache-drupal.conf s následujícím obsahem.

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /app/web

    <Directory /app/web>
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

Vytvořte soubor Docker Compose

Náš web na platformě Drupal bude sestávat ze dvou obrazů Docker. Hlavní obraz, který obsahuje věci specifické pro Drupal, jsme vytvořili pomocí souboru Dockerfile, který jsme vytvořili, a také jsme vytvořili obraz databáze. Docker Compose nám umožňuje vytvářet kontejnery z těchto obrazů a automaticky zajistí spojení mezi těmito kontejnery.

Soubor Docker Compose by měl být také vytvořen ve složce s naším projektem, ./docker-compose.yml.

version: '3'
services:
  db:
    image: mariadb:10.2
    environment:
      MYSQL_DATABASE: drupal
      MYSQL_ROOT_PASSWORD: drupalPassword
    volumes:
      - db_data:/var/lib/mysql
    restart: always
  drupal:
    depends_on:
      - db
    build: .
    ports:
      - "8080:80"
    volumes:
      - ./app:/app
    restart: always
volumes:
  db_data:

Popis

  • Verze Docker Compose.
version: '3'
  • Vytvoříme kontejner databáze (db) jako databázi pro Drupal a s šifrovaným heslem drupalPassword.
services:
  db:
    image: mariadb:10.2
    environment:
      MYSQL_DATABASE: drupal
      MYSQL_ROOT_PASSWORD: drupalPassword
  • Specifikujeme, že chceme použít Dockerový svazek pojmenovaný db_data k uložení obsahu /var/lib/mysql. Tato složka je místem, kde MariaDB ukládá informace o databázích, které obsahuje.
 volumes:
      - db_data:/var/lib/mysql
Here we define the second container as `drupal` which is connected to another container called `db`.drupal:
    depends_on:
      - db
  • Místo používání obrazu, jak jsme udělali pro DB, a poté specifikování Docker obrazu, toto říká Docker Compose, aby použil lokální Docker soubor jako základ pro náš obraz. To znamená, že můžeme stavět na letu bez spouštění samostatného příkazu, nebo horšího, tlačit to do běžného Docker repozitáře, abychom provedli rychlou změnu.
build: .
  • Namapujeme port 8080 na naší lokální oblasti na port 80 na Docker stroji. To nám umožní přistupovat ke svému webu Drupal z našeho lokálního stroje.
ports:
      - "8080:80"
  • Tímto způsobem propojíme složku ./app, což je kořenový adresář projektu, s adresářem /app uvnitř Docker kontejneru.
  volumes:
      - ./app:/app

Vytvořte adresář "app"

Vytvořte adresář "app" ve svém projektu.

mkdir app

Sestavení webové stránky Drupal 8

Jakmile je Docker nakonfigurován, můžeme nyní vytvořit naše kontejnery pomocí následujícího příkazu:

docker-compose up -d --build

"--build" přikaz Docker Compose informuje, že při spuštění tohoto příkazu má přepracovat náš soubor 'Dockerfile'.

docker exec -it MyBloge bash

Po přihlášení do kontejneru můžeme nainstalovat Drupal 8 pomocí Composeru.

/app #  composer create-project drupal-composer/drupal-project:8.x-dev /app --stability dev --no-interaction
/app #  mkdir -p /app/config/sync
/app #  chown -R www-data:www-data /app/web

Nyní navštivte http://localhost:8080 ve svém prohlížeči a můžete nainstalovat Drupal z rozhraní.

Our Offices

Drupart Locations

Naše oddělení

London

151 West Green Road, London, England

442038156478

[email protected]

Drupart R&D

GOSB Teknopark Hi-Tech Bina 3.Kat B3 Gebze - KOCAELİ

+90 262 678 8872

[email protected]

Newark

112 Capitol Trail Suite, A437 Newark DE, 19711

+17406666255

[email protected]

Wiesbaden

Hinterbergstraße 27
65207 Wiesbaden
Deutschland

+49 (0) 6151 – 492 70 23

[email protected]