Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

1.3K
Vistas
Ejecute `docker-php-ext-install` DESDE un contenedor que no sea php

Tengo un problema con Docker (docker-compose). Quiero instalar algunas extensiones de PHP usando docker-compose.yml , pero no puedo hacerlo porque mi .yml tiene FROM ubuntu y no FROM php . ¿Hay alguna forma en que pueda lograr o acceder a docker-php-ext-install ?

Dockerfile

 FROM ubuntu:16.04 RUN apt -yqq update RUN apt -yqq install nginx iputils-ping RUN docker-php-ext-install pdo pdo_mysql mbstring WORKDIR /usr/local/src COPY docker/nginx/dev.conf /etc/nginx/conf.d/dev.conf COPY docker/nginx/nginx.conf /etc/nginx/nginx.conf CMD ["nginx"]

docker-compose.yml

 version: "2" services: mariadb: image: mariadb environment: - MYSQL_ALLOW_EMPTY_PASSWORD=1 - MYSQL_ROOT_PASSWORD= phpmyadmin: image: phpmyadmin/phpmyadmin ports: - "8080:80" restart: always environment: - PMA_HOST=mariadb links: - mariadb php: image: php:7.1.1-fpm ports: - "9000:9000" volumes: - .:/dogopic links: - mariadb nginx: build: . ports: - "8000:80" volumes: - .:/dogopic links: - php

Salida de consola (fragmento)

 Step 5/9 : RUN docker-php-ext-install pdo pdo_mysql mbstring ---> Running in 445f8c82883d /bin/sh: 1: docker-php-ext-install: not found
over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Nueva solución

Debe crear un nuevo Dockerfile para un servicio específico, en este caso php :

php/Dockerfile

 FROM php:7.1.1-fpm RUN apt -yqq update RUN apt -yqq install libxml2-dev RUN docker-php-ext-install pdo_mysql RUN docker-php-ext-install xml

Y luego vincúlelo en su archivo docker-compose.yml , así:

 services: // other services php: build: ./php ports: - "9000:9000" volumes: - .:/dogopic links: - mariadb

Mire el parámetro de build : apunta al directorio en el que se encuentra ese nuevo Dockerfile.

Solución antigua

Caminé alrededor del problema. Descubrí que todavía puedo ejecutar este script docker-php-ext-install usando el siguiente comando:

 docker-compose exec <your-php-container> docker-php-ext-install pdo pdo_mysql mbstring

Y debido a la conveniencia, he creado este archivo por lotes simple para simplificar la composición de contenedores con solo un comando: ./docker.bat

 @ECHO OFF docker-compose build docker-compose exec php docker-php-ext-install pdo pdo_mysql mbstring docker-compose up
over 4 years ago · Santiago Trujillo Denunciar

0

docker-php-ext-install no es una funcionalidad nativa de docker. Si lee atentamente la página de php docker hub , verá que es solo un script proporcionado para facilitar el proceso de instalación:

Proporcionamos los scripts auxiliares docker-php-ext-configure , docker-php-ext-install y docker-php-ext-enable para instalar extensiones de PHP más fácilmente.

Si su imagen se basa en ubuntu , no en php , puede encontrar docker-php-ext-install , por ejemplo, engithub .

Pero dado que su Dockerfile es FROM ubuntu , le aconsejo que instale php con apt-get :

 FROM ubuntu:16.04 RUN apt -yqq update RUN apt -yqq install nginx iputils-ping RUN apt-get install -y php php-fpm pdo-mysql php-mbstring

No olvide configurar nginx para usar php-fpm. Para hacerlo, personalmente uso un script start.sh , que inicia php-fpm y nginx en el contenedor:

 php-fpm -D nginx -g "daemon off;"

Y en el Dockerfile ejecuto el script. no nginx :

 COPY start.sh /tmp/start.sh CMD ["/tmp/start.sh"]
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda