欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

docker 学习笔记——第七集(搭建简单的 LNMP 开发环境)

程序员文章站 2022-04-18 21:26:40
...

搭建简单的 LNMP 开发环境

主要步骤

  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

测试

docker 学习笔记——第七集(搭建简单的 LNMP 开发环境)

配置 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 "aaa@qq.com://aaa@qq.com://aaa@qq.com" /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 // 修改后的内容如下

docker 学习笔记——第七集(搭建简单的 LNMP 开发环境)

创建测试文件

$ touch ~/lnmp/wwwroot/info.php

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

访问测试

docker 学习笔记——第七集(搭建简单的 LNMP 开发环境)

配置 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  	// 内容如下

docker 学习笔记——第七集(搭建简单的 LNMP 开发环境)

测试(看到如下页面则表示成功)

docker 学习笔记——第七集(搭建简单的 LNMP 开发环境)

进入 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 的开发环境了,下集见。

docker 学习笔记——第七集(搭建简单的 LNMP 开发环境)