Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

1.3K
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!