Ako nainštalovať phpMyAdmin pomocou Docker Compose


Spustite phpMyAdmin s Dockerom bez námahy – náš sprievodca poskytuje všetky náležitosti pre rýchle a plynulé nastavenie.

Už viac ako dve desaťročia je phpMyAdmin riešením na správu databáz MySQL a MariaDB.

Je to bezplatný nástroj s otvoreným zdrojovým kódom napísaný v PHP, ktorý používateľom umožňuje zvládať rôzne databázové aktivity, ako je vytváranie, úprava a odstraňovanie databáz; správa tabuliek, polí a indexov; vykonávanie príkazov SQL; a správa používateľov a povolení prostredníctvom pohodlného webového rozhrania.

Na jeho inštaláciu však potrebujete nainštalované PHP a podporu php-fpm nakonfigurovanú s vaším webovým serverom, či už je to NGINX, Apache alebo iný. Našťastie Docker tento proces zjednodušuje a umožňuje vám rýchlo nastaviť phpMyAdmin – v priebehu niekoľkých minút. To vám umožní okamžite sa sústrediť na správu databáz MySQL/MariaDB bez toho, aby ste uviazli v počiatočnom nastavení.

Táto príručka vás prevedie nastavením kontajnera phpMyAdmin pomocou Docker Compose a pokryje každý scenár, aby ste sa uistili, že sa správne pripojí k vašej databáze MySQL/MariaDB. Začnime teda!

Predpoklady

Pred pokračovaním v inštalácii sa uistite, že máte v systéme nainštalovaný Docker. Ale ak ho nemáte, nebojte sa; Ktorýkoľvek z nasledujúcich sprievodcov vám ho pomôže rýchlo získať. Vyberte si distribúciu, ktorú používate, v jednom z nasledujúcich odkazov: Ubuntu 24.04, Debian 12, Arch, Alma/Rocky, Fedora, Linux Mint 22, Pop!_OS 22.04 alebo Raspberry Pi OS.

Ďalšou dôležitou súčasťou je Docker Compose. Najnovšie verzie Dockeru teraz obsahujú Docker Compose inštaláciou balíka "docker-compose-plugin". Nainštalujte si ho, ak ešte nie je vo vašom nastavení.

Ak však chcete, môžete ho získať samostatne pomocou oboch nižšie uvedených príkazov. V takom prípade nezabudnite, že pri spúšťaní nástroja napíšte "docker-compose" namiesto "docker compose".

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

Spúšťanie kontajnerov phpMyAdmin a MySQL spolu

Toto je najbežnejší scenár, keď MySQL začína so sprievodným kontajnerom phpMyAdmin na správu databázy. Aby sme to dosiahli, prvým krokom je vytvorenie adresára projektu, v ktorom bude umiestnený náš súbor nasadenia Docker Compose.

Potom naň prepnite; Odteraz musíte z tohto miesta vykonať všetky príkazy nižšie v tejto príručke.

mkdir phpmyadmin
cd phpmyadmin

Vytvorte súbor s názvom "docker-compose.yml". Tento súbor definuje služby a zväzky pre naše inštancie phpMyAdmin a MySQL a povie Dockeru, čo má robiť a ako nastaviť nasadenie.

Otvorte svoj obľúbený textový editor a vložte doň nasledujúci obsah:

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:

Ako vidíte, nasadenie je jednoduché. Zahŕňa spustenie dvoch kontajnerov: jedného pre server MySQL a druhého pre samotnú aplikáciu phpMyAdmin. Poďme si prejsť kľúčové nastavenia.

Nastavením "PMA_ARBITRARY" na 0 sa odstráni možnosť zadať vlastného hostiteľa na prihlasovacej obrazovke phpMyAdmin. Je to preto, že používame špecifickú preddefinovanú "db" pre kontajner phpMyAdmin, ku ktorému sa chceme pripojiť.

Najdôležitejšia v časti služby "phpmyadmin" je "PMA_HOST". Určuje názov hostiteľa MySQL servera, ku ktorému sa má phpMyAdmin pripojiť.

Keďže však MySQL beží ako iný kontajner v rámci rovnakého nasadenia Dockeru, pripájame sa k nemu odkazom na názov služby, ktorý sme nastavili na "db".

V časti servera "db", ktorá nasadzuje server MySQL, nezabudnite zmeniť hodnotu možnosti "MYSQL_ROOT_PASSWORD" na zabezpečenú. Samozrejme, zabezpečujeme aj perzistenciu údajov MySQL vytvorením pomenovaného zväzku Docker.

Všetko je pripravené! Zadajte nasledujúci príkaz na spustenie a spustenie kontajnera na pozadí:

docker compose up -d

Začnú sa sťahovať obrázky Dockeru. Mali by ste vidieť obrazovku podobnú tej nižšie, ktorá vás informuje, že vaša inštalácia phpMyAdmin/MySQL bola úspešne nasadená a kontajnery sú v prevádzke.

Teraz otvorte prehliadač a prejdite na "http://localhost:8080" alebo "http://<your-server-ip>:8080". Mali by ste vidieť prihlasovaciu stránku phpMyAdmin.

Ak sa chcete prihlásiť, použite používateľské meno "root" a heslo definované v súbore Docker Compose ako hodnoty možnosti "MYSQL_ROOT_PASSWORD". To je všetko! phpMyAdmin sa pripojí k inštancii MySQL a bude pripravený vám slúžiť.

V závislosti od vašich potrieb sa však teraz pozrime na niektoré ďalšie prípady použitia phpMyAdmin, s ktorými sa môžete stretnúť.

Pripojte phpMyAdmin k MySQL nainštalovanému na hostiteľovi

Čo však v prípade, že je váš server MySQL/MariaDB nainštalovaný priamo na hostiteľovi a nie je nasadený ako kontajner Docker? V takom prípade ho kontajner phpMyAdmin nemôže priamo vidieť, pretože je v samostatnej sieti Docker, izolovanej od siete hostiteľa.

Preto, aby sme mohli pripojiť phpMyAdmin k lokálne nainštalovanému MySQL, musíme vykonať niekoľko ďalších konfigurácií, a to ako na strane phpMyAdmin, tak aj na strane MySQL. Konečný súbor phpMyAdmin "docker-compose.yml" by mal vyzerať takto:

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

Kľúčovou časťou je tu možnosť "host.docker.internal:host-gateway". Je to špeciálny názov DNS rozpoznaný spoločnosťou Docker. Prekladá sa na IP adresu, ktorá smeruje do hostiteľského počítača, čo je obzvlášť užitočné, keď potrebujete kontajner na prístup k službám spusteným na hostiteľovi. Viac o tom – tu.

Okrem toho pre možnosť "PMA_HOST" zadajte tento názov DNS špecifický pre Docker, "host.docker.internal".

Na strane MySQL sa uistite, že možnosť "bind-address" je v konfiguračnom súbore MySQL nastavená na "0.0.0.0" a nie na "127.0.0.1". To umožňuje MySQL prijímať pripojenia z ľubovoľnej IP adresy.

Po vykonaní zmien nezabudnite reštartovať server MySQL, aby ste sa uistili, že sa prejavia. Spustením nižšie uvedeného príkazu môžete overiť, či je všetko správne nastavené. Skontrolujte výstup a zistite, či riadok MySQL znie "0.0.0.0".

netstat -tulnp

Teraz spustite kontajner phpMyAdmin pomocou príkazu "docker-compose up -d" a prihláste sa pomocou účtu root pre váš server MySQL.

Ak sa chcete úspešne pripojiť, uistite sa, že používateľ root alebo akýkoľvek iný používateľ, ktorého používate na pripojenie k serveru MySQL prostredníctvom phpMyAdmin, má povolené povolenia na vzdialené pripojenie. Ďalšie podrobnosti o tom, ako spravovať používateľov MySQL, nájdete v našom sprievodcovi na túto tému.

Dôležitá poznámka: Vyššie uvedené nastavenia sprístupnia váš server MySQL z internetu alebo externých sietí. Vo všeobecnosti to nie je bezpečné a je to zlá bezpečnostná prax.

Na ochranu pred pokusmi o neoprávnený prístup je dôležité nastaviť firewall , ktorý povoľuje pripojenie iba z konkrétnych sietí, ako je vaša interná, a blokuje všetky ostatné.

Pripojenie phpMyAdmin k existujúcemu kontajneru MySQL

Posledný scenár je, keď už máme nasadený kontajner MySQL/MariaDB a chceme pridať phpMyAdmin na správu našej databázy prostredníctvom pohodlného grafického rozhrania. Aby ste to dosiahli, musí byť splnená iba jedna podmienka – oba kontajnery musia zdieľať rovnakú sieť Dockeru (aby boli navzájom viditeľné).

Najprv teda musíme vytvoriť sieť Docker, ktorú budú dva kontajnery zdieľať. Môžete ľahko vytvoriť jeden s názvom napríklad "mysql_network" vykonaním nasledujúceho príkazu:

docker network create mysql_network

Ak chcete zobraziť zoznam dostupných sietí Docker, spustite nasledujúci postup:

docker network ls

Teraz zastavte kontajner MySQL a upravte jeho nasadenie pridaním časti služby:

networks:
  - mysql_network

A na jej konci definujte sieť. Konečná verzia by mala byť podobná:

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

To isté urobte aj pre kontajner phpMyAdmin a samozrejme sa uistite, že ste správne zadali názov služby MySQL v možnosti "PMA_HOST":

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

Teraz budú oba kontajnery zdieľať rovnakú sieť, "mysql_network", ktorú sme vytvorili predtým. Preto sa budú navzájom zvidieť.

Nakoniec spustite kontajnery a mali by ste sa bez problémov prihlásiť do svojej inštancie MySQL cez phpMyAdmin.

Záver

Integrácia phpMyAdmin s Dockerom ponúka efektívny a efektívny prístup k správe databáz MySQL/MariaDB.

Či už nasadzujete phpMyAdmin spolu s MySQL v kontajneroch Docker, pripájate sa k serveru MySQL na hostiteľovi alebo integrujete s existujúcim kontajnerom MySQL, náš sprievodca vám poskytne všetky odpovede, ktoré potrebujete, aby ste to zrealizovali.

To šetrí drahocenný čas a znižuje možnosť chýb v konfigurácii, čo vám umožní viac sa sústrediť na správu databázy a menej na zložitosť nastavenia.

Ďalšie informácie o možnostiach dostupných pri vytváraní nasadenia nájdete v dokumentácii phpMyAdmin a MySQL na Docker Hub.

Ďakujem za váš čas! Ak máte nejaké otázky, zanechajte ich v sekcii komentárov nižšie.

Súvisiace články: