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.
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
Pro tento blogový příspěvek vytvoříme blog založený na Drupalu nazvaný "MyBloge".
$ mkdir -p ~/Project/my-bloge
$ cd ~/Project/my-bloge
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
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
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
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 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
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:
version: '3'
services:
db:
image: mariadb:10.2
environment:
MYSQL_DATABASE: drupal
MYSQL_ROOT_PASSWORD: drupalPassword
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
build: .
ports:
- "8080:80"
volumes:
- ./app:/app
Vytvořte adresář "app" ve svém projektu.
mkdir app
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í.