Docker Compose ile phpMyAdmin Nasıl Kurulur


PhpMyAdmin'i Docker ile zahmetsizce çalışır hale getirin; kılavuzumuz hızlı ve sorunsuz bir kurulum için tüm temel bilgileri sağlar.

Yirmi yılı aşkın bir süredir phpMyAdmin, MySQL ve MariaDB veritabanlarını yönetmek için başvurulan çözüm olmuştur.

Kullanıcıların veritabanlarını oluşturma, değiştirme ve silme gibi çeşitli veritabanı etkinliklerini gerçekleştirmesine olanak tanıyan, PHP ile yazılmış ücretsiz ve açık kaynaklı bir araçtır; tabloları, alanları ve dizinleri yönetme; SQL ifadelerinin yürütülmesi; ve kullanışlı bir web tabanlı arayüz aracılığıyla kullanıcıları ve izinleri yönetmek.

Ancak bunu yüklemek için, NGINX, Apache veya başka bir sunucu olsun, PHP'nin kurulu olması ve web sunucunuzla yapılandırılmış php-fpm desteğine ihtiyacınız vardır. Neyse ki Docker bu süreci basitleştirerek phpMyAdmin'i birkaç dakika içinde hızlı bir şekilde kurmanıza olanak tanır. Bu, ilk kurulumlarda takılıp kalmadan hemen MySQL/MariaDB veritabanlarınızı yönetmeye odaklanmanızı sağlar.

Bu kılavuz, Docker Compose'u kullanarak bir phpMyAdmin kapsayıcısı kurma konusunda size yol gösterecek ve MySQL/MariaDB veritabanınıza düzgün şekilde bağlandığından emin olmak için her senaryoyu kapsayacaktır. Öyleyse başlayalım!

Önkoşullar

Kuruluma geçmeden önce sisteminizde Docker'ın kurulu olduğundan emin olun. Ama eğer ona sahip değilseniz korkmayın; Aşağıdaki kılavuzlardan herhangi biri hızlı bir şekilde almanıza yardımcı olacaktır. Kullandığınız dağıtımı aşağıdaki bağlantılardan birinden seçin: Ubuntu 24.04, Debian 12, Arch, Alma/Rocky, Fedora, Linux Mint 22, Pop!_OS 22.04 veya Raspberry Pi OS.

Diğer önemli bileşen Docker Compose'dur. En yeni Docker sürümleri artık “docker-compose-plugin” paketini yükleyerek Docker Compose'u içeriyor. Bu nedenle, kurulumunuzda zaten yoksa yükleyin.

Ancak dilerseniz aşağıdaki her iki komutu da kullanarak ayrı ayrı alabilirsiniz. Bu durumda, aracı çalıştırırken “docker compose” yerine “docker-compose” yazmayı unutmayın. ”

sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-linux-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

PhpMyAdmin ve MySQL Kapsayıcılarını Birlikte Çalıştırın

Bu, MySQL'in veritabanını yönetmek için eşlik eden bir phpMyAdmin kapsayıcısıyla başladığı en yaygın senaryodur. Bunu başarmak için ilk adım Docker Compose dağıtım dosyamızın yerleştirileceği proje dizinini oluşturmaktır.

Daha sonra ona geçin; bundan sonra bu kılavuzun aşağısındaki tüm komutları o konumdan yürütmeniz gerekir.

mkdir phpmyadmin
cd phpmyadmin

“docker-compose.yml” adında bir dosya oluşturun. Bu dosya, phpMyAdmin ve MySQL örneklerimiz için hizmetleri ve birimleri tanımlayacak ve Docker'a ne yapması gerektiğini ve dağıtımın nasıl kurulacağını bildirecektir.

Favori metin düzenleyicinizi açın ve aşağıdaki içeriği ona yapıştırın:

nano docker-compose.yaml
services:
  phpmyadmin:
    image: phpmyadmin:latest
    container_name: phpmyadmin
    ports:
      - 8080:80
    environment:
      - PMA_ARBITRARY=0
      - PMA_HOST=db
    restart: unless-stopped
    depends_on:
      - db
  db:
    image: mysql:latest
    container_name: mysql
    ports:
      - 3306:3306
    environment:
      MYSQL_ROOT_PASSWORD: mypassword
    restart: unless-stopped
    volumes:
      - dbdata:/var/lib/mysql

volumes:
  dbdata:

Gördüğünüz gibi dağıtım basittir. İki konteynerin çalıştırılmasını içerir: biri MySQL sunucusu için, diğeri ise phpMyAdmin uygulamasının kendisi için. Temel ayarların üzerinden geçelim.

“PMA_ARBITRARY” öğesini 0 olarak ayarlamak, phpMyAdmin oturum açma ekranında özel bir ana bilgisayar girme seçeneğini kaldırır. Bunun nedeni, bağlanmak için phpMyAdmin kapsayıcısı için önceden tanımlanmış belirli bir "db" kullanmamızdır.

“phpmyadmin” hizmet kısmındaki en önemli kısım “PMA_HOST”dur. PhpMyAdmin'in bağlanması gereken MySQL sunucusunun ana bilgisayar adını belirtir.

Ancak kurulumumuzda MySQL aynı Docker dağıtımında başka bir konteyner olarak çalıştığı için ona "db" olarak ayarladığımız hizmet adına başvurarak bağlanıyoruz.

MySQL sunucusunu dağıtan “db” sunucu kısmında “MYSQL_ROOT_PASSWORD” seçeneğinin değerini güvenli bir değer olarak değiştirdiğinizden emin olun. Elbette isimlendirilmiş bir Docker birimi oluşturarak MySQL verilerinin kalıcılığını da sağlıyoruz.

Hepimiz hazırız! Kapsayıcıyı arka planda başlatmak ve çalıştırmak için aşağıdaki komutu yazın:

docker compose up -d

Docker görüntüleri indirilmeye başlayacaktır. PhpMyAdmin/MySQL kurulumunuzun başarıyla konuşlandırıldığını ve konteynerlerin çalışır durumda olduğunu bildiren aşağıdakine benzer bir ekran görmelisiniz.

Şimdi tarayıcınızı açın ve “http://localhost:8080” veya “http://:8080” adresine gidin. PhpMyAdmin giriş sayfasını görmelisiniz.

Giriş yapmak için “MYSQL_ROOT_PASSWORD” seçeneğinin değerleri olarak Docker Compose dosyanızda tanımlanan “root” kullanıcı adını ve şifreyi kullanın. İşte bu! phpMyAdmin MySQL örneğine bağlanacak ve size hizmet vermeye hazır olacaktır.

Ancak ihtiyaçlarınıza bağlı olarak şimdi karşılaşabileceğiniz diğer bazı phpMyAdmin kullanım durumlarına bakalım.

PhpMyAdmin'i Ana Bilgisayarda Kurulu MySQL'e Bağlayın

Peki ya MySQL/MariaDB sunucunuz doğrudan ana bilgisayara kuruluysa ve Docker konteyneri olarak konuşlandırılmamışsa? Bu durumda, phpMyAdmin kapsayıcısı onu doğrudan göremez çünkü ana bilgisayarın ağından yalıtılmış ayrı bir Docker ağındadır.

Bu nedenle, phpMyAdmin'i yerel olarak kurulu MySQL'e bağlamak için hem phpMyAdmin hem de MySQL tarafında bazı ek yapılandırmalar yapmamız gerekir. Son phpMyAdmin'in “docker-compose.yml” dosyası şu şekilde görünmelidir:

services:
  phpmyadmin:
    image: phpmyadmin:latest
    container_name: phpmyadmin
    ports:
      - 8080:80
    extra_hosts:
      - "host.docker.internal:host-gateway"
    environment:
      - PMA_ARBITRARY=0
      - PMA_HOST=host.docker.internal
    restart: unless-stopped

Buradaki anahtar kısım “host.docker.internal:host-gateway” seçeneğidir. Docker tarafından tanınan özel bir DNS adıdır. Ana makineye yönlendiren bir IP adresine çözümlenir, bu da onu özellikle ana makinede çalışan hizmetlere erişmek için bir kapsayıcıya ihtiyaç duyduğunuzda kullanışlı kılar. Daha fazlası – burada.

Ayrıca, "PMA_HOST" seçeneği için Docker'a özgü bu DNS adını "host.docker.internal" olarak belirtin.

MySQL tarafında, “bind-address” seçeneğinin “127.0.0.1” olarak değil “0.0.0.0” olarak ayarlandığından emin olun. MySQL yapılandırma dosyasında. Bu, MySQL'in herhangi bir IP adresinden gelen bağlantıları kabul etmesine olanak tanır.

Değişiklikleri yaptıktan sonra bunların etkili olmasını sağlamak için MySQL sunucusunu yeniden başlatmayı unutmayın. Her şeyin doğru ayarlandığını doğrulamak için aşağıdaki komutu çalıştırabilirsiniz. MySQL satırında “0.0.0.0” yazıp yazmadığını görmek için çıktıyı kontrol edin.

netstat -tulnp

Şimdi “docker-compose up -d” komutunu kullanarak phpMyAdmin kapsayıcısını başlatın ve MySQL sunucunuzun kök hesabını kullanarak oturum açın.

Başarılı bir şekilde bağlanmak için, kök kullanıcının veya phpMyAdmin aracılığıyla MySQL sunucusuna bağlanmak için kullandığınız diğer herhangi bir kullanıcının uzaktan bağlantı izinlerinin etkin olduğundan emin olun. MySQL kullanıcılarının nasıl yönetileceği hakkında daha fazla ayrıntı için konuyla ilgili kılavuzumuza göz atın.

Önemli not: Yukarıda belirtilen ayarlar MySQL sunucunuzun internetten veya harici ağlardan erişilebilir olmasını sağlayacaktır. Bu genellikle güvenli değildir ve kötü bir güvenlik uygulamasıdır.

Yetkisiz erişim girişimlerine karşı koruma sağlamak için, yalnızca belirli bağlantılara izin veren bir güvenlik duvarı kurmak önemlidir. dahili ağınız gibi ağları engeller ve diğerlerini engeller.

PhpMyAdmin'i Mevcut MySQL Konteynerine Bağlayın

Son senaryo, zaten konuşlandırılmış bir MySQL/MariaDB konteynerimiz olduğu ve veritabanımızı uygun bir grafik arayüz aracılığıyla yönetmek için phpMyAdmin'i eklemek istediğimiz zamandır. Bunu başarmak için yalnızca bir koşulun karşılanması gerekir: her iki kapsayıcının da aynı Docker ağını paylaşması gerekir (birbirlerine görünür olmaları için).

Bu yüzden öncelikle iki konteynerin paylaşacağı Docker ağını oluşturmalıyız. Aşağıdaki komutu çalıştırarak kolayca örneğin “mysql_network” adında bir tane oluşturabilirsiniz:

docker network create mysql_network

Kullanılabilir Docker ağlarının listesini görüntülemek için aşağıdakileri çalıştırın:

docker network ls

Şimdi MySQL kapsayıcısını durdurun ve hizmet bölümüne ekleyerek dağıtımını değiştirin:

networks:
  - mysql_network

Ve sonunda ağı tanımlayın. Son sürüm şuna benzer olmalıdır:

services:
  db:
    image: mysql:latest
    container_name: mysql
    volumes:
      - dbdata:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: mypassword
    ports:
      - 3306:3306
    restart: unless-stopped
    networks:
      - mysql_network

volumes:
  dbdata:

networks:
  mysql_network:
    name: mysql_network
    external: true

Aynısını phpMyAdmin kapsayıcısı için de yapın ve elbette “PMA_HOST” seçeneğinde MySQL hizmet adını doğru şekilde belirttiğinizden emin olun:

services:
  phpmyadmin:
    image: phpmyadmin:latest
    container_name: phpmyadmin
    ports:
      - 8080:80
    environment:
      - PMA_ARBITRARY=0
      - PMA_HOST=db
    restart: unless-stopped
    networks:
      - mysql_network

networks:
  mysql_network:
    name: mysql_network
    external: true

Artık her iki kapsayıcı da daha önce oluşturduğumuz "mysql_network" adlı aynı ağı paylaşacak. Dolayısıyla birbirlerine görünürlük sağlayacaklar.

Son olarak kapları çalıştırın; phpMyAdmin aracılığıyla MySQL örneğinize sorunsuz bir şekilde giriş yapmalısınız.

Çözüm

PhpMyAdmin'i Docker ile entegre etmek, MySQL/MariaDB veritabanlarını yönetmeye yönelik akıcı ve etkili bir yaklaşım sunar.

İster Docker kapsayıcılarında MySQL'in yanında phpMyAdmin'i dağıtıyor olun, ister ana makinedeki bir MySQL sunucusuna bağlanıyor olun, ister mevcut bir MySQL kapsayıcısıyla entegre ediyor olun, kılavuzumuz size bunu gerçekleştirmek için ihtiyacınız olan tüm yanıtları verir.

Bu, değerli zamandan tasarruf etmenizi sağlar ve yapılandırma hatası olasılığını azaltır; böylece veritabanı yönetimine daha fazla ve kurulum karmaşıklıklarına daha az odaklanmanıza olanak tanır.

Dağıtımınızı oluştururken mevcut seçenekler hakkında daha fazla bilgi için Docker Hub'daki phpMyAdmin ve MySQL belgelerine bakın.

Zaman ayırdığınız için teşekkürler! Sorularınız varsa lütfen aşağıdaki yorum bölümüne bırakın.

İlgili makaleler: