Cómo cargar la extensión mysqli dentro del archivo docker-compose.yml con NGINX, PHP-FPM

2 minutos de lectura

Al cargar docker-compose up, wordpress se carga en la url pero la función mysqli_connect no está definida debido a la ausencia de la extensión.

He intentado agregar lo siguiente debajo de la imagen fpm

comando: “docker-php-ext-instalar mysqli”

Intenté agregar un Dockerfile en el directorio del archivo docker-compose.yml que contiene

version: "3"

services:
  #database
  db:
    image: mysql:5.7
    volumes:
      - db_data:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: wordpress
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: wordpress
    networks:
      - wpsite
  # webserver
  nginx:
    image: nginx:latest
    ports:
      - "8080:80"
    links:
      - fpm
    volumes:
      - /Users/connergesbocker/Github/cbgesbocker/dotfiles/root/etc/nginx/conf.d/village.conf:/etc/nginx/conf.d/village.conf
      - /Users/connergesbocker/WordPress:/WordPress
    networks:
      - wpsite
  # phpmyadmin
  phpmyadmin:
    depends_on:
      - db
    image: phpmyadmin/phpmyadmin
    restart: always
    ports:
      - "8888:8888"
    environment:
      PMA_HOST: db
      MYSQL_ROOT_PASSWORD: wordpress
    networks:
      - wpsite
  fpm:
    image: php:5.6.20-fpm
    ports:
      - "90:9000"
    # command: "docker-php-ext-install mysqli"
    links:
      - db
    volumes:
      - /Users/connergesbocker/WordPress:/WordPress
    working_dir: "https://stackoverflow.com/"
    networks:
      - wpsite
networks:
  wpsite:
volumes:
  db_data:```

Puede personalizar su dockerfile y agregar la instalación en él:

archivo acoplable:

FROM php:5.6.20-fpm
RUN docker-php-ext-install mysqli

Parte de docker-compose.yaml:

fpm:
  build: .
  image: myphp:1
  ports:
    - "90:9000"
  # command: "docker-php-ext-install mysqli"
  links:
    - db
  volumes:
    - /Users/connergesbocker/WordPress:/WordPress
  working_dir: "https://stackoverflow.com/"
  networks:
    - wpsite

  • Tuve que cambiar esto un poco para que me funcionara. Mi docker-compose.yml el archivo es version: '3' y lo hice: “` services: php: build: context: ./php “` Con el Dockerfile sentado en ./php/Dockerfile relativo a mi docker-compose.yml

    – vicia

    26 de diciembre de 2019 a las 17:29

su anulación instalará la extensión pero el contenedor se detendrá después de la instalación porque php-fpm no comenzará por anular CMD. Reemplace el comando con el siguiente.

command:
  - /bin/sh
  - -c
  - |
      docker-php-ext-install mysqli 
      echo "extension installed.....starting php-fpm........................................"
      php-fpm

ingrese la descripción de la imagen aquí

  • La desventaja de esto (vs un separado Dockerfile por la otra respuesta) es que parece ejecutar el comando de instalación cada vez que docker-compose up

    – vicia

    26 de diciembre de 2019 a las 17:27

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad