Docker 學習筆記(第七集:使用 docker 搭建 php 開發環境)

chenggx發表於2020-09-05

主要步驟

  1. 建立 nginx 容器

  2. 建立 phpfpm 容器

  3. 建立自定義網路

  4. 配置 nginx 和 phpfpm 容器通過自定義網路通訊

  5. 建立 mysql 容器

  6. 聯通 mysql、phpfpm、nginx 容器間的互通

  7. 測試

配置 nginx 容器

通過 docker 倉庫中 nginx 映象的使用方法介紹我們得知

  • nginx的網站主目錄在 /usr/share/nginx/html

  • nginx 的配置檔案位置在 /etc/nginx/


// 執行一個臨時的 nginx 容器

$ docker run --name temp-nginx -d nginx

// 在主機上建立 lnmp 目錄用於放置相關目錄

$ mkdir ~/lnmp

$ mkdir ~/lnmp/wwwroot

// 將容器中的 nginx 配置檔案複製到主機的 lnmp/nginx 目錄下

$ docker cp temp-nginx:/etc/nginx ~/lnmp

// 刪除臨時容器

$ docker rm -f temp-nginx

// 在主機上建立 nginx 主目錄

$ mkdir ~/lnmp/wwwroot

// 建立 nginx 容器並繫結上面配置的主目錄、配置檔案目錄

$ docker run -d --name nginx

-p 80:80

--mount type=bind,source=/root/lnmp/wwwroot,target=/usr/share/nginx/html

--mount type=bind,source=/root/lnmp/nginx,target=/etc/nginx

nginx

// 建立測試檔案

$ echo hello LNMP > index.html

測試

測試結果

配置 phpfpm 容器

使用 Dockerfile 自定義 phpfpm 映象


// 建立並進入 easy-php 目錄

$ mkdir easy-php && cd easy-php

$ touch Dockerfile

配置 apt 軟體源為阿里雲、安裝 iconv、gd、 pdo、mysqli、pdo_mysql 擴充套件


FROM php:7.2-fpm

RUN sed -i "s@http://deb.debian.org@http://mirrors.aliyun.com@g" /etc/apt/sources.list

&& rm -Rf /var/lib/apt/lists/*

&& apt-get update && apt-get install -y

libfreetype6-dev

libjpeg62-turbo-dev

libpng-dev

&& docker-php-ext-install -j$(nproc) iconv

&& docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/

&& docker-php-ext-install -j$(nproc) gd

&& docker-php-ext-install mysqli pdo pdo_mysql

// 構建映象

$ docker build -t my-phpfpm-7.2 .

......省略構建過程

Removing intermediate container 57a5d1acfb6b

---> f7d9f204bec3

Successfully built f7d9f204bec3

Successfully tagged my-phpfpm-7.2:latest

$ docker image ls

REPOSITORY TAG IMAGE ID CREATED SIZE

my-phpfpm-7.2 latest f7d9f204bec3 About a minute ago 423MB

//使用建立好的映象構建容器

$ docker run -d --name phpfpm

--mount type=bind,source=/root/lnmp/wwwroot,target=/usr/share/nginx/html

my-phpfpm-7.2

// 建立一個 lnmp 網路

$ docker network create lnmp

// 將 nginx 容器和 phpfpm 容器加入 lnmp 網路

$ docker network connect lnmp nginx

$ docker network connect lnmp phpfpm

// 修改 nginx 配置檔案用於支援 php

// 首先備份一下配置檔案

$ cd /root/lnmp/nginx/conf.d

$ cp default.conf default.conf.bak

$ vim default.conf // 修改後的內容如下

建立測試檔案


$ touch ~/lnmp/wwwroot/info.php

$ echo  "<?php phpinfo(); ?>" > ~/lnmp/wwwroot/info.php

訪問測試

測試結果

配置 MySQL 容器


// 建立 mysql 容器

$ docker run --name mysql -e MYSQL_ROOT_PASSWORD=root -d -p 3306:3306 mysql:5.7

// 將 mysql 容器加入自定義網路 lnmp 中

$ docker network connect lnmp mysql

// 建立 mysql 檔案連結 mysql

$ touch /root/lnmp/wwwroot/mysql.php // 內容如下

mysql 檔案內容

測試(看到如下頁面則表示成功)

測試結果

進入 mysql 容器驗證


$ docker exec -it mysql bash

# mysql -uroot -proot

mysql> show databases;

+--------------------+

| Database |

+--------------------+

| information_schema |

| mysql |

| performance_schema |

| sys |

| test |

+--------------------+

5 rows in  set (0.01 sec)

大功告成,通過上面的內容就可以配置一個簡單的 lnmp 的開發環境了,下集見。

程式設計師的藝術人生

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章