Docker PHP應用程式範例


我們可以使用docker執行php應用程式。 在以下步驟中,將使用建立Docker並執行php應用程式。

  1. 建立一個目錄

使用以下命令建立一個目錄來組織組態和PHP程式碼檔案。

yiibai@ubuntu:~$ mkdir /home/yiibai/docker/php-docker-app
  1. 建立一個PHP檔案

建立一個名稱為:index.php的PHP檔案(vi /home/yiibai/docker/php-docker-app/index.php),內容如下 -

<?php  
    echo "This is first PHP Script build by docker.";
?>
  1. 建立一個 Dockerfile 檔案
FROM php:7.0-apache  
COPY . /var/www/html 
RUN rm -rf /etc/apache2/sites-enabled/000-default.conf

建立上面檔案之後(vi /home/yiibai/docker/php-docker-app/Dockerfile),專案有兩個檔案,如下面所示 -

yiibai@ubuntu:~$ cd /home/yiibai/docker/php-docker-app/
yiibai@ubuntu:~/docker/php-docker-app$ ll
total 16
drwxrwxr-x 2 yiibai yiibai 4096 Jun  3 20:10 ./
drwxrwxr-x 4 yiibai yiibai 4096 Jun  3 20:08 ../
-rw-rw-r-- 1 yiibai yiibai   44 Jun  3 20:10 Dockerfile
-rw-rw-r-- 1 yiibai yiibai   66 Jun  3 20:08 index.php
yiibai@ubuntu:~/docker/php-docker-app$

注意:Dockerfile檔案的名稱要區分大小寫。

  1. 建立Docker映像
yiibai@ubuntu:~/docker/php-docker-app$ docker build -t php-app .

在下面的螢幕截圖中,是正在建立docker映像的輸出。

yiibai@ubuntu:~/docker/php-docker-app$ sudo docker build -t php-app .
Sending build context to Docker daemon  3.072kB
Step 1/2 : FROM php:7.0-apache
7.0-apache: Pulling from library/php
10a267c67f42: Downloading  23.79MB/52.58MB
10a267c67f42: Pull complete
370377701f89: Pull complete
455c73a122bc: Pull complete
fb71bac61c47: Pull complete
288a1d91ad4e: Pull complete
86e0256ba4b0: Pull complete
f14fbe7a9dfb: Pull complete
0f36dd91c0ab: Pull complete
ee4d938396ab: Pull complete
a0e5f6ef63c3: Pull complete
4d3b68c01e8a: Pull complete
855c8caa7af5: Pull complete
cd53b61c5ad7: Pull complete
Digest: sha256:9bec874758f731e5e4e2908744a5e2abfc8bbb6c94425b8abd8d6ef3b5938288
Status: Downloaded newer image for php:7.0-apache
 ---> a4322279ced1
Step 2/2 : COPY . /var/www/html
 ---> c2e626f9d9c6
Removing intermediate container 9a44af0ee1bb
Successfully built c2e626f9d9c6
Successfully tagged php-app:latest
yiibai@ubuntu:~/docker/php-docker-app$

現在可以看看Docker容器中所有可用的映像。使用 docker images -

yiibai@ubuntu:~/docker/php-docker-app$ sudo docker images
[sudo] password for yiibai:
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
php-app             latest              c2e626f9d9c6        16 minutes ago      390MB
java-app            latest              bd61e7f49911        21 hours ago        643MB
php                 7.0-apache          a4322279ced1        30 hours ago        390MB
java                8                   d23bdf5b1b1b        4 months ago        643MB
hello-world         latest              48b5124b2768        4 months ago        1.84kB
yiibai@ubuntu:~/docker/php-docker-app$

上面的輸出結果中,它顯示了所有建立的可用映像中,包函了php-app

  1. 執行Docker映像

現在執行Docker映像,以下命令用於執行Docker映像。

$ sudo docker run php-app

可以看到我們的Docker映像正在執行。此映像正在IP為172.17.0.2上執行,現在開啟瀏覽器或使用curl 172.17.0.2 存取測試。

yiibai@ubuntu:~/docker/php-docker-app$ sudo docker build -t php-app .
Sending build context to Docker daemon  4.096kB
Step 1/3 : FROM php:7.0-apache
 ---> a4322279ced1
Step 2/3 : COPY . /var/www/html
 ---> 67b4cdd58ecc
Removing intermediate container 506cd5be7ef3
Step 3/3 : RUN rm -rf /etc/apache2/sites-enabled/000-default.conf
 ---> Running in 3e0751150765
 ---> 7bd0234c2184
Removing intermediate container 3e0751150765
Successfully built 7bd0234c2184
Successfully tagged php-app:latest
yiibai@ubuntu:~/docker/php-docker-app$ sudo docker run php-app
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message
[Sun Jun 04 04:28:11.305554 2017] [mpm_prefork:notice] [pid 1] AH00163: Apache/2.4.10 (Debian) PHP/7.0.19 configured -- resuming normal operations
[Sun Jun 04 04:28:11.305706 2017] [core:notice] [pid 1] AH00094: Command line: 'apache2 -D FOREGROUND'
172.17.0.2:80 172.17.0.1 - - [04/Jun/2017:04:28:23 +0000] "GET / HTTP/1.1" 200 216 "-" "curl/7.47.0"

開啟另一個終端,存取:curl 172.17.0.2 輸出結果如下 -

yiibai@ubuntu:~$ curl 172.17.0.2
This is first PHP Script build by docker.
yiibai@ubuntu:~$