主要步驟
建立 nginx 容器
建立 phpfpm 容器
建立自定義網路
配置 nginx 和 phpfpm 容器通過自定義網路通訊
建立 mysql 容器
聯通 mysql、phpfpm、nginx 容器間的互通
測試
配置 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 容器驗證
$ 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 協議》,轉載必須註明作者和本文連結