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

搭建简单的 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

测试

测试结果

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

程序员的艺术人生

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值