Añadir extensión PDO pdo_mysql en contenedor Docker Apache + PHP

Tiempo de lectura: 2 minutos

Hoy os voy a enseñar cómo instalar la extensiñon PDO pdo_mysql para utilizar Codeginiter o RedBeans etc…

Tenemos la siguiente imagen docker-compose.yml

version: "3.1"

services:
  miservicio_mariadb:
    image: mariadb
    container_name: mariadb_container
    env_file:
      - ./Dockerfile/mysql.env
    environment:
      MYSQL_DATABASE: "db_prueba"
        # So you don't have to use root, but you can if you like
      MYSQL_USER: "user_prueba"
        # You can use whatever password you like
      MYSQL_PASSWORD: "pass_mysql"
        # Password for root access
      MYSQL_ROOT_PASSWORD: "contra@prueba"
    volumes:
      - ./config/mariadb:/var/lib/mysql
    expose:
      - 3306
    ports:
      - 3306:3306
    networks:
      - docker-network
  phpmyadmin:
    image: phpmyadmin
    restart: always
    container_name: phpmyadmin_container
    ports:
      - 8080:80
    environment:
      - PMA_ARBITRARY=1
    links: 
      - miservicio_mariadb:db
    networks:
      - docker-network

  miservicio_php:
    build: 
      context: ./Dockerfile
      dockerfile: php_file
    env_file:
       - ./Dockerfile/php.env
    container_name: php_container
    volumes:
      # Montamos nuestra web desde fuera en el directorio web del contenedor
      - ./www:/var/www/html
      - ./logs/apache:/var/log/apache2
      - ./config/letsencrypt/certs:/etc/apache2/ssl/
      - ./config/web/logs:/var/www/logs
    expose:
      - 80
      - 443
    ports:
      - 8000:80
      - 442:443
    links: 
      - miservicio_mariadb
    networks:
      - docker-network
networks:
  docker-network:
    driver: bridge
    external: true

Y el archvio de php_container se crea desde este dockerfile:

# syntax=docker/dockerfile:1
FROM php:7.0-apache
RUN docker-php-ext-install mysqli

#Activar modulos de apache:
RUN a2enmod headers
RUN a2enmod rewrite
RUN a2enmod ssl

RUN /etc/init.d/apache2 restart

Si queremos instalar el módulo pdo_mysql, tenemos que añadir lo siguiente:

RUN docker-php-ext-install pdo_mysql

Quedando asi el dockerfile:

# syntax=docker/dockerfile:1
FROM php:7.0-apache
RUN docker-php-ext-install mysqli

RUN docker-php-ext-install pdo_mysql

#Activar modulos de apache:
RUN a2enmod headers
RUN a2enmod rewrite
RUN a2enmod ssl


RUN /etc/init.d/apache2 restart

Y al hacer un phpinfo(); ya nos aparece el módulo instalado:

Deja un comentario