
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 DockerBu blog yazısı için "MyBloge" adlı Drupal tabanlı bir blog oluşturacağız.
$ mkdir -p ~/Project/my-bloge
$ cd ~/Project/my-blogeDockerfile, 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/DockerfileAş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 /appFROM drupal:8.6-apacheRUN apt-get update && apt-get install -y \
curl \
git \
mysql-client \
vim \
wgetRUN 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/drushRUN rm -rf /var/www/html/*COPY apache-drupal.conf /etc/apache2/sites-enabled/000-default.confBurda 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 noetDrupal 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/mysqlBurada ikinci container `db` olarak adlandırılan başka bir container bağlı olan `drupal` olarak belirliyoruz.
drupal:
depends_on:
- dbbuild: .ports:
- "8080:80"./app klasörünü Docker container'in içindeki /app klasörüne bağlar. volumes:
- ./app:/appProjemizin kökünde bir app dizini oluşturun.
mkdir appDocker 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 bashContainer'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.