Drupal sitesini geliştirmenin eski yolları böyle olurdu: drupal kaynak kodlarınızı Shared Hosting'e yükler ve ardından apache sunucunuzu yapılandırır, sonra FTP üzerinden değişiklik yapar ve sonra emin olmak için arada bir MySQL veritabanı yedeklemesi yaparsınız. O günler artık geçti. 2019'da, Drupal sitesini verimli bir şekilde geliştirip korumamıza ve farklı ekiplerin yanı sıra altyapıya göre ölçeklendirmemize olanak tanıyan birçok araç ve en iyi uygulamalar vardır. Bu araçla Drupal'ı geliştirmek, web sitemizin daha iyi performans göstermesini sağlar ve geliştirme hızı da artar.
Docker'i OSX'de Homebrew ile kurmak çok kolaydır. Eğer Homebrew kurulu değilse aşağıdaki komut satırıyla kurabilirsiniz.
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Homebrew'i kurduktan sonra Docker'i sıradaki komut ile kurunuz.
$ brew install docker
$ brew cask install docker // GUI interface for Docker
Bu blog yazısı için "MyBloge" adlı Drupal tabanlı bir blog oluşturacağız.
$ mkdir -p ~/Project/my-bloge
$ cd ~/Project/my-bloge
Dockerfile, bir kullanıcının bir image'yi birleştirmek için komut satırından arayabileceği tüm komutları içeren bir metin belgesidir.
$ touch ~/Project/my-bloge/Dockerfile
Aşağıdakilerle Dockerfile dosyasın doldurun:
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
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
Burda lokal'de olan apache-drupal.conf dosyası ile image'in içinde olan 000-default.conf ile senkronize ediyoruz. apache-drupal.conf dosyasında yapılan değişiklikler otomatik olarak image'in içindeki 000-default.conf dosyasına yansıyacaktır.
Aşağıdaki içerikle apache-drupal.conf dosyası oluşturun.
<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
Drupal sitemiz iki Docker imagesinden oluşacak. Drupal'a özgü şeyleri tutan ana image, oluşturduğumuz Dockerfile
dosyası ile bu image oluşturmuştuk, ayrıca veritabanı image'nı de oluşturmuştuk. Docker Compose bize bu image'lardan container oluşturmayı sağlar ve bu containerin arasında bağlantısını otomak olarak sağlayacak.
Docker Compose dosyası da projemizin kökünde oluşturulmalıdır, ./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'
db
) container'in drupal
veritaban olarak ve drupalPassword
şifreli oluşturuyoruz.services:
db:
image: mariadb:10.2
environment:
MYSQL_DATABASE: drupal
MYSQL_ROOT_PASSWORD: drupalPassword
volumes:
- db_data:/var/lib/mysql
Burada ikinci container `db` olarak adlandırılan başka bir container bağlı olan `drupal` olarak belirliyoruz.
drupal:
depends_on:
- db
build: .
ports:
- "8080:80"
./app
klasörünü Docker container'in içindeki /app
klasörüne bağlar. volumes:
- ./app:/app
Projemizin kökünde bir app
dizini oluşturun.
mkdir app
Docker yapılandırıldığında artık konteynerlerimizi aşağıdaki komutu kullanarak oluşturabiliriz:
docker-compose up -d --build
--build
, Docker Compose'e bu komutu çalıştırdığımızda 'Dockerfile' kodumuzu taze oluşturmasını söyler.
Aşağıdaki komutu kullanarak konteynere giriş yapın:
docker exec -it MyBloge bash
Container'e giriş yaptıktan sonra Composer ile Drupal 8 kurabiliriz.
/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
Şimdi tarayıcınızda http://localhost:8080 adresini ziyaret edin ve Drupal'i arayüz'den kurabilirsiniz.
GOSB Teknopark Hi-Tech Bina 3.Kat B3 Gebze - KOCAELİ