基于window10使用docker搭建lnmpr环境

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 基于window10使用docker搭建lnmpr环境

基于window10使用docker搭建lnmpr环境

Docker介绍

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

下载Docker Desktop

www.docker.com/products/do…

下载LNMP

docker pull nginx
docker pull mysql
docker pull php
docker pull redis

01ebd755782e4c909dad0843d3544acf.jpeg

启动LNMP并映射本地环境

01ebd755782e4c909dad0843d3544acf.jpeg

mysql

docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -v d:\workspace\etc\mysql\conf:/etc/mysql/conf.d -v d:\workspace\etc\mysql\logs:/logs -v d:\workspace\etc\mysql\data:/var/lib/mysql -d mysql:8.0
  • 对应得建本地目录
  • 进入容器
docker exec -it mysql /bin/sh
  • 本地d:\workspace\etc\mysql\logs目录新建一个文件 对应docker容器中就有映射关系

01ebd755782e4c909dad0843d3544acf.jpeg

  • 退出容器 exit;

01ebd755782e4c909dad0843d3544acf.jpeg

  • 本地数据库连接软件

01ebd755782e4c909dad0843d3544acf.jpeg

  • 如果停止mysql容器, docker stop mysql

01ebd755782e4c909dad0843d3544acf.jpeg

  • 然后启动本地window数据库,则test数据库是不存在的,这就是容器的意思吧,哈哈哈

01ebd755782e4c909dad0843d3544acf.jpeg

php

docker run --name php80 -p 9000:9000 -v d:\workspace\www:/var/www/html -v d:\workspace\log\php:/var/log/php --link mysql:8.0 -d php:8.0-fpm

d:\workspace\www d:\workspace\log\php

  • 对应得建本地目录

01ebd755782e4c909dad0843d3544acf.jpeg

  • 成功如下

01ebd755782e4c909dad0843d3544acf.jpeg

安装PHP扩展和composer
  • 进入容器
docker exec -it php80 /bin/sh
cd /

01ebd755782e4c909dad0843d3544acf.jpeg

  • 安装压缩扩展
apt-get update
apt-get install git
apt-get install vim
apt-get install wget
apt-get install --yes zip unzip
apt-get install -y pkg-config libmemcached-dev autoconf gcc make zlib1g zlib1g-dev vim
  • 安装composer
cd /tmp
php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');"
php composer-setup.php
php -r "unlink('composer-setup.php');"
mv composer.phar /usr/local/bin/composer
composer -V

01ebd755782e4c909dad0843d3544acf.jpeg

  • 安装memcache,mongodb,event,redis,mysqli,mysql,gd扩展

PHP扩展文件目录 /usr/src/php/ext/

pecl install https://pecl.php.net/get/memcache-8.0.tgz
docker-php-ext-enable memcache
pecl install https://pecl.php.net/get/mongodb-1.14.2.tgz
docker-php-ext-enable mongodb
pecl install https://pecl.php.net/get/event-3.0.8.tgz
docker-php-ext-enable event
pecl install https://pecl.php.net/get/redis-5.3.7.tgz
docker-php-ext-enable redis
docker-php-ext-install pdo_mysql  
docker-php-ext-install mysqli

你可以在 PHP 官网上下载 memcache PHP 驱动包,下载地址:pecl.php.net/package/mem…

01ebd755782e4c909dad0843d3544acf.jpeg

  • 结果

01ebd755782e4c909dad0843d3544acf.jpeg

01ebd755782e4c909dad0843d3544acf.jpeg

  • 退出容器
exit;
  • 重启容器
docker restart php80
  • 进入容器
docker exec -it php80 /bin/sh
  • 查看已安装扩展
php-m

01ebd755782e4c909dad0843d3544acf.jpeg

redis

docker run --name redis -p 6379:6379 -d redis:latest
复制代码

nginx

docker run --name nginx -p 80:80 -p 443:443 -v d:\workspace\www:/var/www/html -v d:\workspace\etc\nginx:/etc/nginx/nginx/ -v d:\workspace\log\nginx:/var/log/nginx --link php80:8.0-fpm --link redis:latest --link mysql:8.0 -d nginx:latest
复制代码
  • 对应得建本地目录
  • 安装成功
  • 在本地浏览器输入127.0.0.1,安装成功

01ebd755782e4c909dad0843d3544acf.jpeg

调试

  • 创建index.php文件

01ebd755782e4c909dad0843d3544acf.jpeg

  • 进入容器
docker exec -it nginx /bin/sh
  • 安装vim
apt-get update
apt-get install vim
  • 修改配置default.conf文件
vim /etc/nginx/conf.d/default.conf
 location ~ \.php$ {                                                                                                                                                                                                 
        root           /var/www/html; #php容器的目录,不是nginx
        fastcgi_pass   php80:9000;#php容器名
        fastcgi_index  index.php; 
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;                                                                                                                                              
        include        fastcgi_params;                                                                                                                                                                                   
    }

01ebd755782e4c909dad0843d3544acf.jpeg

  • 重启容器
docker restart nginx
复制代码

01ebd755782e4c909dad0843d3544acf.jpeg

  • 修改index.php文件
<?php
$link = mysqli_connect('mysql', 'root', 'root');
if (!$link) {
    die('Could not connect: ' . mysqli_error());
}
echo 'Connected successfully';
mysqli_close($link);
?>

01ebd755782e4c909dad0843d3544acf.jpeg

最后结果

01ebd755782e4c909dad0843d3544acf.jpeg01ebd755782e4c909dad0843d3544acf.jpeg

感谢

blog.csdn.net/qq_35141640…blog.csdn.net/william_n/a…


相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
打赏
0
0
0
0
44
分享
相关文章
深入理解Docker:为你的爬虫项目提供隔离环境
本教程介绍如何使用Docker构建隔离环境,运行Python爬虫项目,采集小红书视频页面的简介和评论。主要内容包括: 1. **Docker隔离环境**:通过Docker容器化爬虫,确保环境独立、易于部署。 2. **代理IP技术**:利用亿牛云爬虫代理突破反爬限制。 3. **Cookie与User-Agent设置**:伪装请求头,模拟真实用户访问。 4. **多线程采集**:提高数据采集效率。 前置知识要求:Python基础、Docker基本操作及HTML解析(可选)。教程还涵盖常见错误解决方法和延伸练习,帮助你优化爬虫代码并避免陷阱。
深入理解Docker:为你的爬虫项目提供隔离环境
Docker容器环境中服务发现与负载均衡的技术与方法,涵盖环境变量、DNS、集中式服务发现系统等方式
本文探讨了Docker容器环境中服务发现与负载均衡的技术与方法,涵盖环境变量、DNS、集中式服务发现系统等方式,以及软件负载均衡器、云服务负载均衡、容器编排工具等实现手段,强调两者结合的重要性及面临挑战的应对措施。
129 3
docker环境下mysql镜像启动后权限更改问题的解决
在Docker环境下运行MySQL容器时,权限问题是一个常见的困扰。通过正确设置目录和文件的权限,可以确保MySQL容器顺利启动并正常运行。本文提供了多种解决方案,包括在主机上设置正确的权限、使用Dockerfile和Docker Compose进行配置、在容器启动后手动更改权限以及使用 `init`脚本自动更改权限。根据实际情况选择合适的方法,可以有效解决MySQL容器启动后的权限问题。希望本文对您在Docker环境下运行MySQL容器有所帮助。
686 1
SSH后判断当前服务器是云主机、物理机、虚拟机、docker环境
结合上述方法,您可以对当前环境进行较为准确的判断。重要的是理解每种环境的特征,并通过系统的响应进行综合分析。如果在Docker容器内,通常会有明显的环境标志和受限的资源视图;而在云主机或虚拟机上,虽然它们也可能是虚拟化的,但通常提供更接近物理机的体验,且可通过硬件标识来识别虚拟化平台。物理机则直接反映硬件真实信息,较少有虚拟化痕迹。通过这些线索,您应该能够定位到您所处的环境类型。
125 2
|
4月前
|
docker的底层原理二:容器运行时环境
本文深入探讨了Docker容器运行时环境的关键技术,包括命名空间、控制组、联合文件系统、容器运行时以及分离的进程树,这些技术共同确保了容器的隔离性、资源控制和可移植性。
77 5
Docker搭建jenkins环境
这篇文章详细介绍了如何利用Docker搭建Jenkins环境,包括拉取Jenkins镜像、配置端口映射及初始化设置的步骤。
295 0
Docker搭建jenkins环境
docker的使用(环境特殊时可以考虑使用)
docker的使用(环境特殊时可以考虑使用)
26 0
docker容器为啥会开机自启动
通过配置适当的重启策略,Docker容器可以在主机系统重启后自动启动。这对于保持关键服务的高可用性和自动恢复能力非常有用。选择适合的重启策略(如 `always`或 `unless-stopped`),可以确保应用程序在各种情况下保持运行。理解并配置这些策略是确保Docker容器化应用可靠性的关键。
231 93
Docker+consul容器服务的更新与发现
通过本文的介绍,我们详细探讨了如何结合Docker和Consul来实现容器服务的更新与发现。通过Consul的服务注册和发现功能,可以高效地管理和监控容器化服务,确保系统的高可用性和可扩展性。希望本文能帮助您在实际项目中更好地应用Docker和Consul,提高系统的可靠性和管理效率。
44 23