Direkt zum Inhalt

Drupal 8 Entwicklung mit Docker auf OSX

Dieses Tool verbessert Drupal, macht unsere Website leistungsfähiger und erhöht auch die Entwicklungsgeschwindigkeit.
Veli Akçakaya
Veli Akçakaya
5 minuten lesen
osxte-docker-ile-drupal-8-gelistirme

Früher lief die Entwicklung einer Drupal-Website so ab: Sie luden Ihren Drupal-Quellcode auf das Shared Hosting hoch, konfigurierten Ihren Apache-Server, nahmen Änderungen per FTP vor und erstellten sicherheitshalber gelegentlich ein Backup der MySQL-Datenbank. Diese Zeiten sind vorbei. Im Jahr 2019 gibt es viele Tools und Best Practices, die es uns ermöglichen, eine Drupal-Website effizient zu entwickeln und zu pflegen und über verschiedene Teams und Infrastrukturen hinweg zu skalieren. Die Entwicklung von Drupal mit diesen Werkzeugen ermöglicht eine bessere Leistung unserer Website und erhöht die Entwicklungsgeschwindigkeit.

Erforderliche Anwendungen

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

Docker

Es ist sehr einfach, Docker mit Homebrew unter OSX zu installieren. Wenn Homebrew nicht installiert ist, können Sie es mit der Befehlszeile unten installieren.

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

Nach der Installation von Homebrew installieren Sie Docker mit dem folgenden Befehl.

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

Projekt

Für diesen Blogbeitrag werden wir einen Drupal-basierten Blog namens "MyBloge" erstellen.

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

Dockerdatei erstellen

Dockerfile ist ein Textdokument, das alle Befehle enthält, die ein Benutzer von der Befehlszeile aus suchen kann, um ein Image zu defragmentieren.

$ touch ~/Project/my-bloge/Dockerfile

Füllen Sie das Dockerfile mit folgendem Inhalt:

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

Beschreibung

  • Dies ist das offizielle Docker Library Drupal Image. Bei Verwendung dieses Images müssen wir Apache und PHP nicht konfigurieren.

FROM drupal:8.6-apache

  • Wir installieren die notwendigen Anwendungen für die Drupal-Entwicklung in Docker Image.

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

  • Dann installieren wir composer mit dem folgenden Befehl:

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');"

  • Wir richten Drush ein:

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

  • Wir löschen das vorhandene Drupal im Docker Image. Wir werden Drupal mit Composer installieren.

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

  • Apache Conf.

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

Hier wird die Datei apache-drupal.conf lokal mit der Datei 000-default.conf im Image synchronisiert. Änderungen in der Datei apache-drupal.conf werden automatisch in der Datei 000-default.conf im Image übernommen.

Apache VHost-Konfigurationsdatei erstellen

Erstellen Sie eine apache-drupal.conf-Datei mit dem folgenden Inhalt.

<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

Docker Compose Datei erstellen

Unsere Drupal-Site wird aus zwei Docker-Images bestehen. Das Haupt-Image, das Drupal-spezifische Dinge enthält, haben wir mit der von uns erstellten Dockerfile-Datei erstellt, ebenso wie das Datenbank-Image. Mit Docker Compose können wir Container aus diesen Images erstellen und die Verbindung zwischen diesen Containern wird automatisch hergestellt.

Die Docker Compose-Datei muss ebenfalls im Stammverzeichnis unseres Projekts erstellt werden, ./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:

Erläuterung

  • Version von Docker Compose.

version: '3'

  • Wir erstellen den Datenbank (db)-Container als drupal-Datenbank und drupalPassword verschlüsselt.

services:  db:    image: mariadb:10.2    environment:      MYSQL_DATABASE: drupal      MYSQL_ROOT_PASSWORD: drupalPassword

  • Wir geben an, dass wir ein Docker-Volume namens db_data verwenden wollen, um den Inhalt von /var/lib/mysql zu speichern. In diesem Verzeichnis speichert MariaDB die Informationen für die enthaltenen Datenbanken.

 volumes:      - db_data:/var/lib/mysqlBurada ikinci container `db` olarak adlandırılan başka bir container bağlı olan `drupal` olarak belirliyoruz. drupal:    depends_on:      - db

  • Anstatt ein Image zu verwenden, wie wir es für DB getan haben, und dann ein Docker-Image zu spezifizieren, weist dies Docker Compose an, die lokale Docker-Datei als Grundlage für unser Image zu verwenden. Dies bedeutet, dass wir im laufenden Betrieb bauen können, ohne einen separaten Befehl auszuführen oder, schlimmer noch, das Image in ein gemeinsames Docker-Repository zu zwingen, um eine schnelle Änderung vorzunehmen.

build: .

  • Verknüpfen Sie Port 8080 auf unserer lokalen Region mit Port 80 auf dem Docker-Rechner. Dadurch können Sie von unserem lokalen Rechner aus auf unsere Drupal-Website zugreifen.

ports:      - "8080:80"

  • Dadurch wird der Ordner ./app, das Stammverzeichnis des Projekts, mit dem Ordner /app innerhalb des Docker-Containers verknüpft.

  volumes:      - ./app:/app

Anwendungsverzeichnis erstellen

Erstellen Sie ein App-Verzeichnis im Stammverzeichnis unseres Projekts.

mkdir app

Aufbau der Drupal 8-Website

Wenn Docker konfiguriert ist, können wir nun unsere Container mit dem folgenden Befehl erstellen:

docker-compose up -d --build

--build, Wenn wir diesen Befehl in Docker Compose ausführen, wird Docker Compose angewiesen, unseren "Dockerfile"-Code neu zu erstellen.

Melden Sie sich mit folgendem Befehl am Container an:

docker exec -it MyBloge bash

Nachdem wir uns bei Container angemeldet haben, können wir Drupal 8 mit Composer installieren.

/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

Rufen Sie nun http://localhost:8080  in Ihrem Browser auf, und Sie können Drupal über die Schnittstelle installieren.

Unsere Büros

Drupart Locations

Unsere Buros

Wiesbaden

Hinterbergstraße 27
65207 Wiesbaden
Deutschland

+49 (0) 6151 – 492 70 23

[email protected]

London

151 West Green Road, London, England

+44 203 815 6478

[email protected]

Newark

112 Capitol Trail Suite, A437 Newark DE, 19711

+1 (740) 666 6255

[email protected]

Istanbul

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

+49 (0) 6151 – 492 70 23

[email protected]