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

本文涉及的产品
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS AI 助手,专业版
简介: 基于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应用了

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
6月前
|
弹性计算 关系型数据库 微服务
基于 Docker 与 Kubernetes(K3s)的微服务:阿里云生产环境扩容实践
在微服务架构中,如何实现“稳定扩容”与“成本可控”是企业面临的核心挑战。本文结合 Python FastAPI 微服务实战,详解如何基于阿里云基础设施,利用 Docker 封装服务、K3s 实现容器编排,构建生产级微服务架构。内容涵盖容器构建、集群部署、自动扩缩容、可观测性等关键环节,适配阿里云资源特性与服务生态,助力企业打造低成本、高可靠、易扩展的微服务解决方案。
2097 10
|
5月前
|
应用服务中间件 Linux nginx
在虚拟机Docker环境下部署Nginx的步骤。
以上就是在Docker环境下部署Nginx的步骤。需要注意,Docker和Nginix都有很多高级用法和细节需要掌握,以上只是一个基础入门级别的教程。如果你想要更深入地学习和使用它们,请参考官方文档或者其他专业书籍。
247 5
|
数据采集 存储 Docker
深入理解Docker:为你的爬虫项目提供隔离环境
本教程介绍如何使用Docker构建隔离环境,运行Python爬虫项目,采集小红书视频页面的简介和评论。主要内容包括: 1. **Docker隔离环境**:通过Docker容器化爬虫,确保环境独立、易于部署。 2. **代理IP技术**:利用亿牛云爬虫代理突破反爬限制。 3. **Cookie与User-Agent设置**:伪装请求头,模拟真实用户访问。 4. **多线程采集**:提高数据采集效率。 前置知识要求:Python基础、Docker基本操作及HTML解析(可选)。教程还涵盖常见错误解决方法和延伸练习,帮助你优化爬虫代码并避免陷阱。
361 7
深入理解Docker:为你的爬虫项目提供隔离环境
|
7月前
|
缓存 Ubuntu Docker
Ubuntu环境下删除Docker镜像与容器、配置静态IP地址教程。
如果遇见问题或者想回滚改动, 可以重启系统.
465 16
|
9月前
|
消息中间件 监控 Docker
Docker环境下快速部署RabbitMQ教程。
就这样,你成功地用魔法召唤出了RabbitMQ,还把它和你的应用程序连接了起来。现在,消息会像小溪流水一样,在你的系统中自由流淌。别忘了,兔子们不喜欢孤独,他们需要你细心的关怀,不时地监控它们,确保他们的世界运转得井井有条。
574 18
|
8月前
|
弹性计算 关系型数据库 Nacos
低配阿里云 ECS 如何 docker 环境部署 NACOS : 单机版模式
NACOS 单机版 Docker 安装指南。使用指定端口和 custom.env 配置文件启动 Nacos 服务,适用于 2.X 版本,包含 gRPC 支持及 MySQL 数据源配置。 -e MODE=standalone \
648 5
|
9月前
|
消息中间件 监控 Docker
Docker环境下快速部署RabbitMQ教程。
至此,这次神秘而简明的部署之旅告一段落。祝你在利用RabbitMQ打造消息队列时,一切顺风顺水!
470 8
|
9月前
|
Ubuntu 机器人 开发者
Docker环境下的ROS Noetic:Ubuntu 20.04 系统下的解决方案
这就是在Docker环境下安装ROS Noetic在Ubuntu 20.04系统的一种简单方法,希望能对你有所帮助。
971 16
|
8月前
|
存储 缓存 Serverless
【Azure Container App】如何在Consumption类型的容器应用环境中缓存Docker镜像
在 Azure 容器应用的 Consumption 模式下,容器每次启动均需重新拉取镜像,导致冷启动延迟。本文分析该机制,并提出优化方案:使用 ACR 区域复制加速镜像拉取、优化镜像体积、设置最小副本数减少冷启动频率,或切换至 Dedicated 模式实现镜像缓存,以提升容器启动效率和应用响应速度。
262 0

热门文章

最新文章