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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
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
相关文章
|
1月前
|
Dubbo Java 应用服务中间件
微服务框架Dubbo环境部署实战
微服务框架Dubbo环境部署的实战指南,涵盖了Dubbo的概述、服务部署、以及Dubbo web管理页面的部署,旨在指导读者如何搭建和使用Dubbo框架。
85 17
微服务框架Dubbo环境部署实战
|
1月前
|
NoSQL 关系型数据库 Redis
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
mall在linux环境下的部署(基于Docker容器),docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongodb、minio详细教程,拉取镜像、运行容器
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
|
1月前
|
虚拟化 Docker Windows
window 10专业版部署docker环境
本文介绍了如何在Windows 10专业版上部署Docker环境,包括安装步骤、配置镜像加速以及可能遇到的错误处理。
63 2
window 10专业版部署docker环境
|
21天前
|
Kubernetes Docker 微服务
构建高效的微服务架构:基于Docker和Kubernetes的最佳实践
在现代软件开发中,微服务架构因其灵活性和可扩展性而受到广泛青睐。本文探讨了如何利用Docker和Kubernetes来构建高效的微服务架构。我们将深入分析Docker容器的优势、Kubernetes的编排能力,以及它们如何结合实现高可用性、自动扩展和持续部署。通过具体的最佳实践和实际案例,读者将能够理解如何优化微服务的管理和部署过程,从而提高开发效率和系统稳定性。
|
1月前
|
SQL 安全 数据库
Web安全漏洞专项靶场—SQL注入—docker环境—sqli-labs靶场—详细通关指南
Web安全漏洞专项靶场—SQL注入—docker环境—sqli-labs靶场—详细通关指南
62 1
|
2月前
|
Linux iOS开发 Docker
Docker技术概论(2):Docker环境的搭建
Docker技术概论(2):Docker环境的搭建
77 17
|
2月前
|
Linux 数据库 数据安全/隐私保护
|
2月前
|
Ubuntu Shell Docker
在Docker环境下如何“安装”Ubuntu
【8月更文挑战第18天】在Docker环境中“安装”Ubuntu实际上是指利用Ubuntu镜像构建容器。
68 1
|
25天前
|
关系型数据库 数据库 网络虚拟化
Docker环境下重启PostgreSQL数据库服务的全面指南与代码示例
由于时间和空间限制,我将在后续的回答中分别涉及到“Python中采用lasso、SCAD、LARS技术分析棒球运动员薪资的案例集锦”以及“Docker环境下重启PostgreSQL数据库服务的全面指南与代码示例”。如果你有任何一个问题的优先顺序或需要立即回答的,请告知。
44 0
|
1月前
|
Ubuntu Linux 编译器
通过qemu和docker搭建交叉编译环境
通过qemu和docker搭建交叉编译环境
下一篇
无影云桌面