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é?
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
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.
-
Pero me gustaría ejecutar un servidor web porque necesito mostrar mi sitio web en el navegador.
-Aleksander Chelpski
15 de enero de 2019 a las 6:10
-
Esta publicación explica el uso de Docker-copmpose thecodeframework.com/running-php-using-docker-compose-yml-file
– Gagan
21 de julio de 2020 a las 3:20
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:
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
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