Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to run a PHP script on docker?

Tags:

php

docker

I have index.php:

<?php
echo "Hello World";
?>

Dockerfile from the website: https://docs.docker.com/samples/library/php/

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

I build image and run container:

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

I see only text "Hello World" but my application doesn't work in http://localhost:7000/ why?

like image 941
Aleksander Chelpski Avatar asked Jan 14 '19 13:01

Aleksander Chelpski


People also ask

Can I run PHP in Docker?

You can use docker run to create a container and execute PHP. You just need to add some volumes to the container. These volumes should include the paths to your code.


2 Answers

If you want to run some script "on the fly" with php-cli you can create the container and remove it immediately after the script execution.

Just go to the directory with your code and run:

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 - power shell

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

--rm will remove the container after execution

-v $(pwd):/app/ will mount current directory

php:7.4-cli is the image

and php /app/script.php is the command which will be executed after the container is created

like image 188
Alexander Gavazov Avatar answered Oct 02 '22 06:10

Alexander Gavazov


You can keep the same base image as you have php:7.2-cli :

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

build the image:

docker build -t my-php-app .

run it:

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

You will obtain:

Hello World

Everything you did was correct except the port mapping (-p 7000:80) which is not necessary because you don't run a web server.

== EDIT

If you want to run it as a web server, use the following Dockerfile:

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

build it:

docker build -t my-php-app .

and run it:

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

you will then have your PHP script runnnig on 8080.

like image 36
Ortomala Lokni Avatar answered Oct 02 '22 07:10

Ortomala Lokni