Salta el contingut

Docker: MySQL + phpMyAdmin

Entorn de desenvolupament local amb MySQL 8.4 i phpMyAdmin orquestrats amb Docker Compose. phpMyAdmin és accessible al port 8889 i es connecta automàticament amb les credencials configurades.


Estructura de fitxers

mysql-phpmyadmin/
└── docker-compose.yml

docker-compose.yml

services:

  mysql:
    image: mysql:8.4
    container_name: mysql-gbd
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: gbd
      MYSQL_USER: gbd_user
      MYSQL_PASSWORD: gbd_pass
    volumes:
      - mysql_data:/var/lib/mysql
    networks:
      - mysql_net
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-uroot", "-proot"]
      interval: 10s
      timeout: 5s
      retries: 5
    restart: unless-stopped

  phpmyadmin:
    image: phpmyadmin:latest
    container_name: phpmyadmin-gbd
    environment:
      PMA_HOST: mysql
      PMA_PORT: 3306
      PMA_USER: root
      PMA_PASSWORD: root
    ports:
      - "8889:80"
    networks:
      - mysql_net
    depends_on:
      mysql:
        condition: service_healthy
    restart: unless-stopped

volumes:
  mysql_data:

networks:
  mysql_net:

Posada en marxa

docker compose up -d
docker compose ps

Obre el navegador a:

http://localhost:8889

phpMyAdmin s'obre directament amb la sessió iniciada com a root. La base de dades gbd ja existeix i hi ha un usuari addicional gbd_user amb accés restringit a gbd.


Credencials

Servei Camp Valor
MySQL Usuari root root
MySQL Contrasenya root root
MySQL Usuari app gbd_user
MySQL Contrasenya app gbd_pass
MySQL Base de dades gbd
MySQL Port (host) 3306
phpMyAdmin URL http://localhost:8889

Connexió des del terminal

# Amb mysql-client instal·lat localment
mysql -h 127.0.0.1 -P 3306 -u root -proot gbd

# Des de dins del contenidor
docker exec -it mysql-gbd mysql -u root -proot gbd

127.0.0.1 en lloc de localhost

MySQL interpreta localhost com a connexió per socket Unix. Des del host, cal usar 127.0.0.1 (TCP) per connectar al port 3306 exposat pel contenidor.


Gestió del cicle de vida

docker compose stop
docker compose start
docker compose down
docker compose down -v   # esborra també les dades