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

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 基于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应用了

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1月前
|
搜索推荐 测试技术 数据安全/隐私保护
【Docker项目实战】Docker环境下部署NeonLink书签平台
【2月更文挑战第17天】Docker环境下部署NeonLink书签平台
95 0
|
1月前
|
测试技术 API 开发者
【Docker项目实战】在Docker环境下部署go-file文件分享工具
【2月更文挑战第15天】在Docker环境下部署go-file文件分享工具
67 1
|
1月前
|
安全 测试技术 数据安全/隐私保护
【好用的个人工具】Docker环境下部署FileDrop文件共享工具
【2月更文挑战第13天】Docker环境下部署FileDrop文件共享工具
65 2
|
1月前
|
Java Docker 微服务
如何使用Docker和Docker Compose部署微服务
【2月更文挑战第12天】
259 0
|
22小时前
|
数据库 Nacos Docker
基于docker-compose部署微服务基本环境
基于docker-compose部署微服务基本环境
4 0
|
22天前
|
jenkins 测试技术 持续交付
软件测试|docker搭建Jenkins+Python+allure自动化测试环境
通过以上步骤,你可以在Docker中搭建起Jenkins自动化测试环境,实现Python测试的自动化执行和Allure报告生成。 买CN2云服务器,免备案服务器,高防服务器,就选蓝易云。百度搜索:蓝易云
44 6
|
1月前
|
Kubernetes 开发者 Docker
构建高效微服务架构:Docker与Kubernetes的完美搭档
【2月更文挑战第29天】在当今快速发展的软件开发领域,微服务架构已成为提高系统可维护性、扩展性和敏捷性的关键解决方案。本文将深入探讨如何利用Docker容器化技术和Kubernetes集群管理工具,共同构建一个既高效又可靠的微服务环境。我们将分析Docker和Kubernetes的核心功能,并展示它们如何协同工作以简化部署流程、增强服务发现机制以及实现无缝的服务伸缩。通过实际案例分析,本文旨在为开发者提供一套实用的微服务架构设计和实施指南。
|
1月前
|
NoSQL 关系型数据库 MySQL
Docker安装详细步骤及相关环境安装配置(mysql、jdk、redis、自己的私有仓库Gitlab 、C和C++环境以及Nginx服务代理)
Docker安装详细步骤及相关环境安装配置(mysql、jdk、redis、自己的私有仓库Gitlab 、C和C++环境以及Nginx服务代理)
224 0
|
1月前
|
监控 持续交付 Docker
深入浅出:基于Docker的微服务部署实践
【2月更文挑战第26天】在当前软件开发领域,微服务架构与容器化技术成为提升应用可伸缩性、可靠性和开发效率的关键手段。本文将深入探讨如何利用Docker容器技术实现微服务的快速部署与管理,涵盖环境搭建、服务打包、网络配置及持续集成等核心话题。通过实例演示,旨在为开发者提供一套行之有效的微服务部署解决方案。
|
1月前
|
存储 测试技术 数据安全/隐私保护
【Docker项目实战】Docker环境下部署immich照片管理系统
【2月更文挑战第19天】Docker环境下部署immich照片管理系统
325 6