Why Docker?
The portability of the containers, can be deployed anywhereEfficient system resource usage compare to VM
How to Dockerize your php application?
Assuming your OS already have a good and working Docker installation
Let us use single page PHP applications below, index.php inside a webfolder directory
index.php content;<?php
phpinfo();
?>
[root@localhost php_docker]# tree .
.
└── webfolder
└── index.php
Create a Dockerfile
Dockerfile in a list of instruction/command call to assemble the image
[root@localhost php_docker]# tree .
.
├── Dockerfile
└── webfolder
└── index.php
Content of the Dockerfile;
[root@localhost php_docker]# tree .
.
├── Dockerfile
└── webfolder
└── index.php
Content of the Dockerfile;
FROM php:7.4-apache
COPY webfolder/ /var/www/html/
EXPOSE 80
Explanation for each line
FROM php:7.4-apache
[root@localhost php_docker]# docker build --rm -t myphpdocker .
docker build [OPTIONS] PATH | URL | -
--rm = Remove intermediate containers after a successful build
-t = Name and optionally a tag in the 'name:tag' format
myphpdocker = docker container name
. (single dot) = build path
Check the built image
[root@localhost php_docker]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
myphpdocker latest 0c1fe5b1aa9e 47 minutes ago 414 MB
Next is to run the docker
docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]
-t = Allocate a pseudo-TTY
-i = Keep STDIN open even if not attached
-it = For interactive processes (like a shell), you must use -i -t together
-p = Publish a container's port(s) to the host
-d = Run container in background and print container ID
Lets try the interactive mode first
[root@localhost php_docker]# docker run -p 80:80 -it myphpdocker
Apache log appear on the terminal.
Open your browser and head to "http:/<host ip>/"
Now try the detach mode
[root@localhost php_docker]# docker run -p 80:80 -d myphpdocker
Check the running container
[root@localhost php_docker]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4619304831d4 myphpdocker "docker-php-entryp..." 6 seconds ago Up 5 seconds 0.0.0.0:80->80/tcp frosty_tesla
Explanation for each line
FROM php:7.4-apache
- php:7.4-apache based image selection
- copy webfolder content into container /var/www/html/
- Apache2 default web directory
- expose port 80 to the host
[root@localhost php_docker]# docker build --rm -t myphpdocker .
docker build [OPTIONS] PATH | URL | -
--rm = Remove intermediate containers after a successful build
-t = Name and optionally a tag in the 'name:tag' format
myphpdocker = docker container name
. (single dot) = build path
Check the built image
[root@localhost php_docker]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
myphpdocker latest 0c1fe5b1aa9e 47 minutes ago 414 MB
Next is to run the docker
docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]
-t = Allocate a pseudo-TTY
-i = Keep STDIN open even if not attached
-it = For interactive processes (like a shell), you must use -i -t together
-p = Publish a container's port(s) to the host
-d = Run container in background and print container ID
Lets try the interactive mode first
[root@localhost php_docker]# docker run -p 80:80 -it myphpdocker
Apache log appear on the terminal.
Open your browser and head to "http:/<host ip>/"
Now try the detach mode
[root@localhost php_docker]# docker run -p 80:80 -d myphpdocker
Check the running container
[root@localhost php_docker]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4619304831d4 myphpdocker "docker-php-entryp..." 6 seconds ago Up 5 seconds 0.0.0.0:80->80/tcp frosty_tesla
No comments:
Post a Comment