Docker’da Apache, MySQL, Php, Redis Stack Kurulumu

Bu makale içerisinde Docker ortamında Apache, MySQL, PHP, PhpMyAdmin ve Redis ile bir çalışma ortamı üretebilmek için işlem adımlarına değindim.

Hem açık kaynağa destek olmak hem de kendimi geliştirmek amacıyla ilk hazırladığım stack’ı GitHub’da paylaşmıştım. Hazırladığım bu stack’i sadece development süreçlerinde kullanıyorum. Elbette, production süreçleri için de tercih edilebilir, ancak birden fazla projeyi barındıracağınız bir yapıya ihtiyacınız var ise bu reponun production ortamında yeterli güvenlik önlemlerine sahip olması için desteğe ihtiyacı var, önceden bilgilendireyim ^_^

Gereksinimler

  • Docker
  • Docker Compose
  • En az 5 GB disk alanı (Docker image dosyaları ve proje dizini için)
  • En az 1 GB ram bellek
  • En az 1 Core işlemci gücü

Neler yüklenecek?

  • Apache 2.4
  • MySQL 5.7 (tercihe göre MariaDB 10.3 veya MySQL 8)
  • PHP 7.3 (Güncel IonCube ile)
  • PhpMyAdmin (son sürüm)
  • Redis (son sürüm)

Kurulum

Öncelikle kurulumu nereye yapacaksanız, sunucu veya kişisel bilgisayarınız, cihazınızda Git CLI veya herhangi bir Git GUI yazılımı/paketi olması gerekiyor. Eğer Git mevcut ise, aşağıdaki kurulum adımlarını takip edebilirsiniz.

Git repo’sunu klonlayın.

git clone https://github.com/gurkanbicer/docker-lampr-stack.git

Örnek environment dosyasını kopyalayın.

cd docker-lampr-stack && cp sample.env .env

Eğer portları değiştirmek isterseniz veya farklı bir MySQL versiyonu seçmek ya da MySQL root şifrelerini güncellemek isterseniz .env dosyasını düzenleyebilirsiniz. Varsayılan değerler aşağıdaki gibidir.

HTTP_PORT=80
HTTPS_PORT=443
MYSQL_PORT=3306
PMA_PORT=8080
REDIS_PORT=6379

HTTPD_DOCUMENT_ROOT=./www
HTTPD_VHOSTS_DIR=./config/vhosts
HTTPD_LOG_DIR=./logs/apache
HTTPD_PHP_INI=./config/php/php.ini

DATABASE=mysql
# mysql / mysql8 /  mariadb

MYSQL_DATA_DIR=./data/mysql
MYSQL_LOG_DIR=./logs/mysql
MYSQL_MY_CNF=./config/mysql/my.cnf

MYSQL_ROOT_USER=root
MYSQL_ROOT_PASSWORD=secret

MYSQL_SAMPLE_USERNAME=docker
MYSQL_SAMPLE_PASSWORD=docker
MYSQL_SAMPLE_DATABASE=docker

DATABASE değişkeni içerisine gelebilecek veriler mysql, mysql8 ve mariadb şeklindedir. mysql yazdığınızda MySQL 5.7, mysql8 yazdığınızda MySQL 8, mariadb yazdığınızda ise MariaDB 10.3 image dosyasını çekecektir.

Tüm portlar varsayılan portlardır, eğer cihazınızda bu portlarda çalıştırdığınız farklı uygulamalar var ise düzenleyebilirsiniz.

Ek olarak, MySQL root şifrenizi güncelleyebilir ve varsayılan veritabanı bilgilerini de güncelleyebilirsiniz.

Gerekli konfigürasyonları yaptıysanız projeyi ayağa kaldırma zamanı.

docker-compose up -d 

1-2 dakika kadar kısa bir süre bekleyin ve tarayıcınızın adres satırında http://localhost olarak erişim sağlayın.

Sonuç

Eğer LAMP-R Stack başlıklı bir sayfa sizi karşıladıysa herhangi bir sorun yoktur. Tabi, içerisindeki PHP dosyaları varsayılan portlara göre hazırlandığı için örneğin MySQL portunu güncellediyseniz, test kısmında hata görebilirsiniz, normaldir.

Dipnotlar

Birden fazla vhost oluşturabilirsiniz. Dizin yapısı bu şekilde kullanıma uygun hazırlanmıştır. Vhost dosyaları config/vhosts dizininde yer almaktadır. 00_default.conf dosyasını, örneğin abc.com‘u barındırmak istiyorsanız abc.com.conf olarak kopyalayıp, dosya içeriğini düzenleyin. www dizinine de abc.com.conf içerisinde belirttiğiniz dizini oluşturup, apache2.4-php7.3 isimli konteyneri yeniden başlatın.

PhpMyAdmin’e de http://localhost:8080 adresinden erişim sağlayabilirsiniz.

Barındıracağınız PHP projelerinde; MySQL konfigürasyonu yaparken hostname kısmına mysql, Redis konfigürasyonu yaparken hostname kısmına redis yazmanız gerekmektedir.

gurkanbicer/docker-lampr-stack

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir