Docker kullanarak codeigniter (php)+ mysql + phpmyadmin

S. Kağan Cin
2 min readMar 20, 2020

Bugün son yılların yükselen teknolojisi olan Docker kullanarak bir php framework ü olan Codeigniter ı mysql ile bağlayarak local de nasıl çalıştırırız onu göreceğiz.

Öncelikle projenizin isminde bir klasör oluşturun. Ardından bu klasörün içince web ve db adından 2 klasörde daha oluşturun. Burada ki web klasörümüze codeigniter dosyalarımızı, db klasörüne ise sql kurulumu sırasında kullanacağımız sql dosyamızı atacağız. Klasörleri oluşturduktan sonra web klasörüne varsa codeigniter framework dosyalarınızı kopyalayın yoksa https://codeigniter.com/ kendi sitesinden indirip rar dan çıkan dosyaları kopyalayın. Eğer kurulum sırasında mevcut bir sql kuracaksanız mysql’e, o dosyayı db klasörüne kopyalayınız(sql uzantılı). Dosya aktarım işlemleri bu kadar şimdi Docker kısmına geçelim.

Projemizde ki web klasörünün altına Dockerfile adında dosya oluşturun ve içine aşağıdaki kodları kopyalayıp yapıştırın.

FROM php:7.3-apacheRUN apt-get update && apt-get upgrade -yRUN a2enmod rewriteRUN docker-php-ext-install mysqli && docker-php-ext-install pdo_mysqlEXPOSE 80

php:7.3-apache : php apache docker image image ni kullandık.

apt-get update && apt-get upgrade -y : sistemi güncelledik.

a2enmod rewrite : htaccess dosyası kullanabilmemiz için yazdık.

docker-php-ext-install mysqli && docker-php-ext-install pdo_mysql: php de mysqli ve pdo kullanabilmek için docker ayarlarını tanımladık.

Php tarafı için gerekli Docker ayarlarını yaptık. Şimdi projemizi ana dizinine docker-compose.yml isminde bir dosya oluşturun ve kodları kopyalayıp yapıştırın.

NOT : Phpmyadmin için phpmyadmin/phpmyadmin image ini kullandık

NOT : database altında container_name ne yazdıysak php kısmında da mysql e bağlanırken host kısmına bunu yazmanız gerekiyor.

Şimdi tüm işlemleri bitirdiğimize göre dockerımızı ayağa kaldıralım.

docker-compose up 

NOT : Eğer linux işletim sistemi kullanıyorsanız yukarıdaki kodun önüne sudo ifadesi koymanız gerekiyor.

NOT: docker-compose.yml dosyasında değişiklik yaparsanız aşağıdaki kod satırını kullanmalısınız.

docker-compose up --build

Docker ımız sorunsuzca ayağa kaldırdığımıza göre şimdi projemize nasıl ulaşırız ona bakalım. Docker-compose dosyasında php kısmı için 8000 portunu, phpmyadmin için ise 8004 portunu vermiştik bu sebepten dolayı

http://localhost:8000 adresinden projemize,

http://localhost:8004 adresinden phpmyadmine ulaşabiliriz.

Eğer codeigniter projemizde router sorunu yaşarsanız web klasörü altına .htaccess dosyası oluşturup aşağıdaki kodları kopyalayıp yapıştırın.

<IfModule mod_rewrite.c>RewriteEngine onRewriteCond $1 !^(index\.php|resources|robots\.txt)RewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_FILENAME} !-dRewriteRule ^(.*)$ index.php/$1 [L,QSA]</IfModule>

NOT : Mevcut tüm containerları durdurup kaldırmak için

docker stop $(docker ps -a -q) && docker rm $(docker ps -a -q)

--

--