基于Docker的LNMP环境微服务搭建

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 基于Docker的LNMP环境微服务搭建

1、LNMP解释:


Linux:Linux 操作系统

Nginx:Web 服务器

MariaDB:数据库

PHP:脚本语言

4d3d00fae190288a4e5b0104d7e58ed6.png


2、 操作步骤


说明:以下环境搭建在linux系统内需要切换至root用户,已是root的不用管


(1)搭建Docker环境1.查看版本内核,需要在3.8以上

uname -r

ad6d28851a47479f866b967cfa79dca2.png

2.下载docker安装包,版本看自己需要,几乎都是可以的,本次选择18.09.8版本


wget https://download.docker.com/linux/static/stable/x86_64/docker-18.09.8.tgz

8c2f99068a744210a234b45339483f68.png


4 解压到docker目录下


tar -zxvf  ./docker-18.09.8.tgz -C /usr/local/ 

f1fa45da40be100282a51969a854efcb_28ffb16756474409b0ef0b4129bfcb2d.png


5 创建docker映射在宿主机上的文件夹


mkdir -p /usr/local/docker/data  

6 进入配置文件,按i进入编辑模式;


vim /etc/profile ##

在文件的最末尾加上docker路径:

PATH=$PATH:/usr/local/docker

然后按:wq保退出;


7 刷新配置文件生效


source /etc/profile 

8 进入docker目录下


cd /usr/local/docker

9 后台运行docker程序


./dockerd -g /usr/local/docker/data & 

4f012e65ffbf2dafb6282690d6777a48_fab4be65ef064fc0a547f19edab71d0f.png


10 查看是否安装成功,显示docker版本信息


docker --version  

57f0958c215de19254b3c28c151d02c0_fff373a4d0114abebbe443b1be9d391e.png

(2)部署Mysql(与MariaDB选择一个就行)

1.docker search mysql##寻找docker镜像


docker search mysql

77674818631585d4b970f6e4a091064f_586b8e882edc445ab57db89f3352c953.png


2.docker pull mysql:5.7 ##不加版本号,默认拉取最新的,也可以 docker pull mysql:[tag] 拉取指定版本


docker pull mysql:5.7

7f9397d3d2fbad73c628a78757c7227e_37e5f2cfefd242128987b11b84655443.png


3.docker images ##查看镜像,找到mysql镜像名


docker images

9be916ca13f6aa01e45053cd696bc9c0_2055bffe5994409889980b9b58ed1cfa.png


4.mkdir -p /usr/local/mysql/data ##创建mysql挂载目录

mkdir -p /usr/local/mysql/data

5.docker run -d --name my-mysql -p 3306:3306 -v /usr/local/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=12345678

mysql:5.7 r ##–name 后面是自定的容器名,后续查看或者进入容器都能用到,-p 端口映射,容器内部端口映射到宿主机的端口 ;-v mysql数据和配置文件挂载目录 -e mysql 的启动参数,设置root密码;


docker run -d --name my-mysql  -p 3303:3306 -v /usr/local/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=12345678 mysql:5.7

-p后边的5000:80代表把容器里的80端口映射给宿主机的5000端口。这样做了映射之后,可以通过5000端口访问该项目的主页。

-p后边的3303:3306代表把容器里的3306端口映射给宿主机的3303端口。这样做了映射之后,可以通过3303端口访问mysql。

a7460a5cd0f9f816772131058ff0a8c8_ea25b8c5cf1642188d90a200288c0571.png


5.使用navicat等工具或者docker exec -it 容器id bash 进入容器内部,都可以连接上数据库;

查看容器id

docker ps

26826322f37b382e44d517bf50753196_f8aa4201891a4165b0d76b473113637c.png

docker exec -it efd460899249 bash 

进入bash后

输入:

mysql -uroot -p12345678

70b5a8d9137998ab3e9382979ad774fe_98693671f285419ba9c131a02f8fb259.png


8c9aba92817588c0618d70af2a7f3194_7f43606e51704eb78280abe7e90fb422.png


(3)部署Php环境

1.docker search php ##寻找docker镜像


docker search php

dcf59ec08ec3e41e2520820bf354f93f_24f69140175948f7b252ebda547d12df.png


2.docker pull php:7.3.7-fpm ##拉取指定版本镜像


docker pull php:7.3.7-fpm

514e266c4e0ed100b56aaf83cd503657_b149a608fa214af1833f80792c678818.png


3.docker images ##查看镜像,找到php镜像名后面启动参数里会用镜像名


docker images

41caded680be7a70dddd062026ff0f8e_0a7183f7b4f24812856c03814d28f0af.png

4.mkdir -p /usr/local/nginx/html ##创建挂载目录


mkdir -p /usr/local/nginx/html

5.docker run -d --name my-php -p 9000:9000 -v /usr/local/nginx/html:/www php:7.3.7-fpm ##–name 后面是自定的容器名,后续查看或者进入容器都能用到,-p 端口映射,容器内部端口映射到宿主机的端口 ;-v 挂载数据卷;


docker run -d --name my-php -p 9000:9000 -v /usr/local/nginx/html:/www  php:7.3.7-fpm

525d8f05fa932850a227d74db66264cb_2282fca2c8304d2680599e2c32c4a12d.png


5.docker ps 可以查看创建成功的php容器


docker ps

fb5802171c60b9ecb58536469f7216e2_f0e9c91bf88f4653b0d35740d5e6b063.png

(4)部署Nginx

1.docker search nginx ##寻找docker镜像


docker search nginx

c0c46224773fa0b84fbe65b651f95101_497cca96920c414885a8ec619fb71da2.png


2.docker pull nginx ##不加版本号,默认拉取最新的,也可以 docker pull nginx:[tag] 拉取指定版本


docker pull nginx

57f2093c7fc15092dd9cb1bedc49e5d8_1be32dc0c53e4cf7be424260b86f3c05.png

3.docker images ##查看镜像,找到nginx镜像名后面启动参数里会用镜像名


docker images 

98bf084f96ef1c0c6712993fe0cebfc7_b90b679d3e814590b5dc07641ad25933.png


4.mkdir -p /usr/local/nginx/conf.d ##创建nginx宿主机配置文件目录


mkdir -p /usr/local/nginx/conf.d

5.vim /usr/local/nginx/conf.d/nginx.conf ##把下面配置文件内容写进去


vim /usr/local/nginx/conf.d/nginx.conf

6.

docker run -d --name my-nginx -p 80:80 -v /usr/local/nginx/conf.d:/etc/nginx/conf.d -v /usr/local/nginx/html:/usr/share/nginx/html --privileged=true --link my-php:php nginx


7.docker ps ##可以看到运行的容器


docker ps

8.访问服务器地址可以看到nginx页面,说明部署成功

###配置文件内容###


server {
    listen       80;
    server_name  localhost;
    location / {
        root   /usr/local/nginx/html;
        index  index.html index.htm index.php;
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/local/nginx/html;
    }
    location ~ \.php$ {
        fastcgi_pass   php:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /www/$fastcgi_script_name;
        include        fastcgi_params;
    }
}

至此LNMP环境搭建完成,接下来就是相应的php服务,php服务放在/usr/local/nginx/html目录下,通过服务器地址+php文件名,就可以访问具体的php应用了

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
23天前
|
Kubernetes 持续交付 Docker
利用 Docker 和 Kubernetes 实现微服务部署
【10月更文挑战第2天】利用 Docker 和 Kubernetes 实现微服务部署
|
5天前
|
Kubernetes 负载均衡 Docker
构建高效微服务架构:Docker与Kubernetes的完美搭档
本文介绍了Docker和Kubernetes在构建高效微服务架构中的应用,涵盖基本概念、在微服务架构中的作用及其实现方法。通过具体实例,如用户服务、商品服务和订单服务,展示了如何利用Docker和Kubernetes实现服务的打包、部署、扩展及管理,确保微服务架构的稳定性和可靠性。
32 7
|
4天前
|
Kubernetes 负载均衡 Docker
构建高效微服务架构:Docker与Kubernetes的完美搭档
【10月更文挑战第22天】随着云计算和容器技术的快速发展,微服务架构逐渐成为现代企业级应用的首选架构。微服务架构将一个大型应用程序拆分为多个小型、独立的服务,每个服务负责完成一个特定的功能。这种架构具有灵活性、可扩展性和易于维护的特点。在构建微服务架构时,Docker和Kubernetes是两个不可或缺的工具,它们可以完美搭档,为微服务架构提供高效的支持。本文将从三个方面探讨Docker和Kubernetes在构建高效微服务架构中的应用:一是Docker和Kubernetes的基本概念;二是它们在微服务架构中的作用;三是通过实例讲解如何使用Docker和Kubernetes构建微服务架构。
22 6
|
7天前
|
Kubernetes 持续交付 Docker
探索DevOps实践:利用Docker与Kubernetes实现微服务架构的自动化部署
【10月更文挑战第18天】探索DevOps实践:利用Docker与Kubernetes实现微服务架构的自动化部署
36 2
|
22天前
|
Java Docker 微服务
SpringBoot微服务打包Docker镜像
SpringBoot微服务打包Docker镜像
53 11
|
17天前
|
网络安全 虚拟化 Docker
SSH后判断当前服务器是云主机、物理机、虚拟机、docker环境
结合上述方法,您可以对当前环境进行较为准确的判断。重要的是理解每种环境的特征,并通过系统的响应进行综合分析。如果在Docker容器内,通常会有明显的环境标志和受限的资源视图;而在云主机或虚拟机上,虽然它们也可能是虚拟化的,但通常提供更接近物理机的体验,且可通过硬件标识来识别虚拟化平台。物理机则直接反映硬件真实信息,较少有虚拟化痕迹。通过这些线索,您应该能够定位到您所处的环境类型。
15 2
|
25天前
|
存储 监控 Shell
docker的底层原理二:容器运行时环境
本文深入探讨了Docker容器运行时环境的关键技术,包括命名空间、控制组、联合文件系统、容器运行时以及分离的进程树,这些技术共同确保了容器的隔离性、资源控制和可移植性。
36 5
|
24天前
|
jenkins Java 持续交付
Docker搭建jenkins环境
这篇文章详细介绍了如何利用Docker搭建Jenkins环境,包括拉取Jenkins镜像、配置端口映射及初始化设置的步骤。
86 0
Docker搭建jenkins环境
|
2月前
|
Dubbo Java 应用服务中间件
微服务框架Dubbo环境部署实战
微服务框架Dubbo环境部署的实战指南,涵盖了Dubbo的概述、服务部署、以及Dubbo web管理页面的部署,旨在指导读者如何搭建和使用Dubbo框架。
185 17
微服务框架Dubbo环境部署实战
|
27天前
|
开发者 Docker 微服务
利用Docker Compose优化微服务架构
在微服务架构中,Docker Compose提供了一种简便有效的方法来定义和运行多容器Docker应用程序,通过YAML文件配置服务、网络和卷,实现一键创建和启动。这不仅确保了开发、测试和生产环境的一致性,还简化了团队协作和维护工作,大幅提升了开发效率。本文将详细介绍Doker Compose的核心优势、基本使用方法及高级功能,帮助你更好地管理和优化微服务架构。

热门文章

最新文章