¿Cómo ejecutar un script PHP en la ventana acoplable?

4 minutos de lectura

Avatar de usuario de Aleksander Chelpski
Aleksander Chelski

Tengo index.php:

<?php
echo "Hello World";
?>

Dockerfile del sitio web: https://docs.docker.com/samples/library/php/

FROM php:7.2-cli
COPY . /usr/src/myapp
WORKDIR /usr/src/myapp
CMD [ "php", "./index.php" ]

Construyo la imagen y ejecuto el contenedor:

docker build -t my-php-app .
docker run -p 7000:80 --rm --name hello-world-test my-php-app

Solo veo el texto “Hello World” pero mi aplicación no funciona en http://localhost:7000/ ¿por qué?

  • El contenedor no tiene un servidor web. Necesitas usar algo como FROM php:7.2-apache

    – ejecutable

    14 de enero de 2019 a las 13:10


  • ¿Puede ser más específico al referirse a “su aplicación” y “no funciona”.

    – edbighead

    14 de enero de 2019 a las 13:12

  • Cuando trato de abrir el sitio web, tengo: ERR_CONNECTION_REFUSED, para php: 7.2-Apache sigue siendo el mismo problema

    -Aleksander Chelpski

    14 de enero de 2019 a las 13:14


  • Solo busca en el doc… docker run -d -p 80:80 --name my-apache-php-app -v "$PWD":/var/www/html php:7.2-apache

    – ejecutable

    14 de enero de 2019 a las 13:18

  • Me gustaría ejecutar esto usando Dockerfile.

    -Aleksander Chelpski

    14 de enero de 2019 a las 13:25

Si desea ejecutar algún script “sobre la marcha” con php-cli puede crear el contenedor y eliminarlo inmediatamente después de la ejecución del script.

Simplemente vaya al directorio con su código y ejecute:

Unix

docker container run --rm -v $(pwd):/app/ php:7.4-cli php /app/script.php

Windows-cmd

docker container run --rm -v %cd%:/app/ php:7.4-cli php /app/script.php

Windows – carcasa de energía

docker container run --rm -v ${PWD}:/app/ php:7.4-cli php /app/script.php

--rm eliminará el contenedor después de la ejecución

-v $(pwd):/app/ montará el directorio actual

php:7.4-cli es la imagen

y php /app/script.php es el comando que se ejecutará después de crear el contenedor

  • Justo lo que estaba buscando. Perfecto para probar scripts simples y el comportamiento de versiones antiguas de PHP. Gracias.

    –Henrik Skogmo

    23 de enero de 2020 a las 12:28

  • Me topé con esto, resolví un problema que estaba teniendo perfectamente. Gracias, muy útil!

    – RocketNuts

    5 de marzo de 2022 a las 17:04

Avatar de usuario de Ortomala Lokni
Ortomala Lokni

Puede mantener la misma imagen base que tiene php:7.2-cli:

FROM php:7.2-cli
COPY . /usr/src/myapp
WORKDIR /usr/src/myapp
CMD [ "php", "./index.php" ]

… construye la imagen:

docker build -t my-php-app .

…ejecutarlo:

docker run --rm --name hello-world-test my-php-app

Obtendrás:

Hello World

Todo lo que hizo fue correcto, excepto la asignación de puertos (-p 7000:80) que no es necesario porque no está ejecutando un servidor web.

== EDITAR

Si desea ejecutarlo como un servidor web, use el siguiente Dockerfile:

FROM php:7.2-apache
COPY . /var/www/html/

…constrúyelo:

docker build -t my-php-app .

… y ejecutarlo:

docker run -p 8080:80 -d my-php-app

Luego tendrá su script PHP ejecutándose en 8080.

Avatar de usuario de English
Inglés

1. Cree un script php simple:

echo '<?php echo "Working";' > my.php

2. Ejecute la ventana acoplable:

docker  run -p 8080:8080 --rm -v $(pwd):$(pwd) php:7.4-cli php -S 0.0.0.0:8080  $(pwd)/my.php

3. Abrir en el navegador:

http://localhost:8080/

Muchas respuestas sugieren usar Apache para esto, pero eso no es obligatorio. Debe tener su aplicación en el contenedor ejecutándose continuamente en un puerto específico. Puedes quedarte con el php:7.2-cli imagen, pero su CMD debería ser diferente:

CMD [ "php", "-S 0.0.0.0:80", "./index.php" ]

Esto ejecutará el servidor web PHP incorporado y luego puede exponerlo con el comando de ejecución de la ventana acoplable que ya tenía

Aquí hay un ejemplo rápido y simple con Estibador en ventanas 11suponiendo que tiene una estructura de directorios similar a la del siguiente ejemplo:

C:\Users\YourName\Workspace\MyProject\program.php

Y program.php tiene el siguiente contenido:

<?php echo "It works!"; ?>

Luego, en el símbolo del sistema, navegue hasta el directorio del proyecto:

cd C:\Users\YourName\Workspace\MyProject

Ejecutar con CLI

docker run --rm -p 8080:8080 -v %CD%:/cli php:7.4-cli php -S 0.0.0.0:8080 /cli/program.php

Vista: http://localhost:8080

Ejecutar con SERVIDOR

docker run --rm -d -p 8081:80 -v %CD%:/server --mount type=bind,source="%CD%",target=/var/www/html php:apache

Vista: http://localhost:8081/programa.php

Entonces siéntase libre de modificar program.php y actualice la página.

Medioambiente

  • Docker versión 20.10.16, compilación aa7e414
  • Windows 11 Home, versión 22H2, compilación del sistema operativo 22622.436

¿Ha sido útil esta solución?