使用docker-compose搭建lnmpr环境

源码gitee

compose 使用的三个步骤:

• 使用 Dockerfile 定义应用程序的环境。
• 使用 docker-compose.yml 定义构成应用程序的服务,这样它们可以在隔离环境中一起运行。
• 最后,执行 docker-compose up -d 命令来启动并运行整个应用程序。

这里说明一下:mysql 待续

下面先展示如下存在的目录及文件结构

在这里插入图片描述

docker-compose.yml 文件内容

version: "1.0"
services:redis:image: redis5.0.12:v1container_name: lnmp_redisbuild:context: ./redisdockerfile: Dockerfilevolumes:- ./redis/conf:/etc/redis- ./redis/logs:/usr/local/redis/logs- ./redis/data:/usr/local/redis/dataenvironment:- TZ=Asia/Shanghaiports:- "6379:7379"networks:- backendphp: image: php8:v1container_name: lnmp_php8build: context: ./phpdockerfile: Dockerfiledepends_on:- "redis"volumes:- ./php/project:/data/wwwroot/project- ./php/logs:/usr/local/php/logsenvironment:- TZ=Asia/Shanghaiports:- "9000:9000"networks:- frontend- backendnginx:image: nginx1.22:v1container_name: lnmp_nginxbuild:context: ./nginxdockerfile: Dockerfiledepends_on:- "php"volumes:- ./nginx/html:/data/wwwroot/html- ./nginx/nginx.conf:/usr/local/nginx/conf/nginx.confenvironment:- TZ=Asia/Shanghaiports:- "80:80"- "443:443"networks:- frontend
networks:frontend:backend:

nginx中Dockerfile文件内容

# 拉取 CentOS
FROM centos:7.8.2003# 作者信息
MAINTAINER "LuNan"# 下载相关依赖
RUN yum update -y \&& yum install -y vim git wget gcc gcc-c++ automake pcre pcre-devel zlib zlib-devel openssl openssl-devel iproute net-tools iotop # 创建用户
RUN useradd www# 设置 nginx 版本
ENV NGINX_VERSION 1.22.0# 下载安装及编译
RUN wget http://nginx.org/download/nginx-1.22.0.tar.gz \&& tar -zxf nginx-$NGINX_VERSION.tar.gz \&& cd nginx-$NGINX_VERSION \&& ./configure  --prefix=/usr/local/nginx  --with-http_sub_module --with-http_ssl_module && make && make install# 配置RUN mkdir -p /data/wwwroot/htmlCOPY ./nginx.conf /usr/local/nginx/conf/nginx.confCOPY ./html/index.html /data/wwwroot/html# 声明要把容器的哪些端口映射到宿主机
EXPOSE 80 433COPY run.sh /etc/run.sh
RUN chmod +x /etc/run.shENTRYPOINT ["/etc/run.sh"]

nginx中run.sh文件内容

#!/bin/bash/usr/local/nginx/sbin/nginx -g "daemon off;" tail -f /dev/null

nginx中html目录下的index.html文件内容

<!DOCTYPE html>
<html>
<head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title></title>
</head>
<body>ceshinginx镜像测试文件
</body>
</html>

php中Dockerfile文件内容

# 拉取 CentOS
FROM centos:7.8.2003
# 作者信息
MAINTAINER "LuNan"# 下载相关依赖
RUN yum update -y \&& yum install -y vim git wget gcc gcc-c++ automake pcre pcre-devel zlib zlib-devel openssl openssl-devel iproute net-tools iotop \libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel libcurl-develRUN yum install -y libwebp-develRUN yum install -y http://down.24kplus.com/linux/oniguruma/oniguruma-6.7.0-1.el7.x86_64.rpm \http://down.24kplus.com/linux/oniguruma/oniguruma-devel-6.7.0-1.el7.x86_64.rpm# 保证nginx 和php 用户相同
RUN groupadd www && useradd -g www www# 设置 php 版本
ENV PHP_VERSION 8.2.8
#下载及编译
RUN  cd /opt \&& wget https://www.php.net/distributions/php-$PHP_VERSION.tar.gz --no-check-certificate \&& tar -zxf php-$PHP_VERSION.tar.gz \&& cd php-$PHP_VERSION \&& ./configure  --prefix=/usr/local/php \--with-config-file-path=/usr/local/php/etc \--with-openssl \--enable-fpm \--enable-gd \--with-curl \--with-zlib \--with-jpeg \--with-webp=/usr/local/include/webp  \--with-freetype=/usr/local/freetype \--without-sqlite3 \--without-pdo-sqlite \--disable-rpath \--enable-mbstring \--enable-mysqlnd \--with-mysqli \--with-pdo-mysql \--with-fpm-user=www \--with-fpm-group=www \&& make && make install
# 执行shell命令
RUN cp /opt/php-$PHP_VERSION/php.ini-development /usr/local/php/etc/php.ini \&& cp  /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf \&& cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf \&& sed -i "90a \daemonize = no" /usr/local/php/etc/php-fpm.conf \&& sed -i "s/127.0.0.1/0.0.0.0/" /usr/local/php/etc/php-fpm.d/www.conf \&& mkdir -p /data/wwwroot/projectCOPY ./project/index.php /data/wwwroot/project/EXPOSE 9000
COPY run.sh /etc/run.sh
RUN chmod +x /etc/run.sh# 启动
ENTRYPOINT ["/etc/run.sh"]

php中project目录下的index.php 文件内容

<?php
echo "ce";
echo "ceshi";
echo phpinfo();

php中run.sh 文件内容

#!/bin/bash/usr/local/php/sbin/php-fpm tail -f /dev/null

redis中Dockerfile文件内容

# 拉取 CentOS
FROM centos:7.8.2003# 维护者
MAINTAINER lunan# 设置 Redis 版本
ENV REDIS_VERSION 5.0.12# 下载依赖
RUN yum update -y \&& yum install -y vim wget gcc gcc-c++ make perl tar # 下载包和编译
RUN  cd /opt \&& wget http://download.redis.io/releases/redis-$REDIS_VERSION.tar.gz \&& tar -zxf redis-$REDIS_VERSION.tar.gz \&& cd redis-$REDIS_VERSION \&& make && make PREFIX=/usr/local/redis install# 相关配置
RUN  cd /opt/redis-$REDIS_VERSION \&& mkdir -p /usr/local/redis/{logs,data} \ && mkdir -p /etc/redis && chmod -R 755 /etc/redis #&& chmod +x redis.conf \#&& mv redis.conf /etc/redis/redis.conf \#&& sed -i "s/bind 127.0.0.1/bind 0.0.0.0/g" /etc/redis/redis.conf \#&& sed -i "s/daemonize no/daemonize yes/g" /etc/redis/redis.conf 
# 复制本地文件到容器中
COPY ./conf/redis.conf /etc/redis/redis.conf# 设置端口
EXPOSE 6379# 脚本运行
COPY run.sh /etc/run.sh
RUN chmod +x /etc/run.sh
ENTRYPOINT ["/etc/run.sh"]

redis中conf目录下的redis.conf变更

bind 0.0.0.0
daemonize yes

redis中run.sh文件内容

#!/bin/bash/usr/local/redis/bin/redis-server /etc/redis/redis.conf > /usr/local/redis/logs/redis.logtail -f /dev/null

执行docker-compose 命令

docker-compose up -d

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

php新增redis扩展

在php Dockerfile文件内容后面新增如下内容:# redis 扩展版本
ENV REDIS_PECL_VERSION 5.3.7
# 新增redis扩展
RUN cd /opt \ && wget  https://pecl.php.net/get/redis-$REDIS_PECL_VERSION.tgz \&& tar -zxvf redis-$REDIS_PECL_VERSION.tgz \ && cd  redis-$REDIS_PECL_VERSION \&& /usr/local/php/bin/phpize \&& ./configure -with-php-config=/usr/local/php/bin/php-config \&& make && make install \&& sed -i "90a \extension=redis.so" /usr/local/php/etc/php.ini

然后使用 docker-compose up -d 重新镜像,在php 配置中就能看到redis 扩展了
在这里插入图片描述

后续…

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/11645.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

D2L学习记录-10-词嵌入word2vec

NLP-1-词嵌入(word2vec) 参考: 《动手学深度学习 Pytorch 第1版》第10章 自然语言处理 第1、2、3 和 4节 (词嵌入) 词嵌入 (word2vec)&#xff1a; 词向量&#xff1a;自然语言中&#xff0c;词是表义的基本单元。词向量是用来表示词的向量。词嵌入 (word embedding)&#x…

常见的正则表达式

目录 问题现象&#xff1a; 问题分析&#xff1a; 解决方法&#xff1a; 拓展&#xff1a; 1、手机号或座机&#xff1a; 2、邮箱&#xff1a; 3、中文&#xff1a; 4、数字&#xff1a; 5、英文&#xff1a; 6、组合&#xff1a; 问题现象&#xff1a; 今天在项目中&…

数据库转换分析软件:EasyMorph 5.X Crack

EasyMorph 为您和您的团队提供数据超能力。无需编码技能。不要问 IT 人员。 自己做。 内置动作 即使您不是 IT 专家&#xff0c;也可以从任何地方检索数据并自动执行复杂的数据转换 无需 SQL 或编程知识 — 设计简单且 100% 可视化 减少对企业IT部门的依赖&#xff0c;减少繁琐…

Git的远程操作与多人协作

"爱在地图上剥落&#xff0c;我离孤单几公里~" 我们目前所说、所学的内容&#xff08;工作区、暂存区、版本库&#xff09;都只是存在于本地上&#xff0c;也就是说你的一台机器上只有这么一个你维护的版本库。可是Git是一个分布式版本控制系统&#xff0c;这又是什…

YOLO 划分数据集(训练集、验证集、测试集)

目录 前言训练集、验证集&#xff08;8:2&#xff09;训练集、验证集、测试集&#xff08;7:2:1&#xff09; 前言 本博客是在我的另一篇博客 VOC 格式与 YOLO 格式的相互转换 的基础上进行的&#xff0c;有需要可以参考 以下代码亲测可以直接复制运行&#xff08;以下所有的路…

【个人笔记】Linux命令之watch命令

1.命令简介 watch 以周期性方式执行给定的命令&#xff0c;并全屏显示执行结果&#xff0c;可以帮助监测一个命令的运行结果。 2.命令格式及参数选项说明 命令格式&#xff1a; watch [OPTIONS] COMMAND选项说明&#xff1a; -d, --differences [PERMANENT]高亮显示最近两…

ES6基础知识二:ES6中数组新增了哪些扩展?

一、扩展运算符的应用 ES6通过扩展元素符…&#xff0c;好比 rest 参数的逆运算&#xff0c;将一个数组转为用逗号分隔的参数序列 console.log(...[1, 2, 3]) // 1 2 3console.log(1, ...[2, 3, 4], 5) // 1 2 3 4 5[...document.querySelectorAll(div)] // [<div>, &l…

【机器学习】基础知识点的汇总与总结!更新中

文章目录 一、监督学习1.1、单模型1.1.1、线性回归1.1.2、逻辑回归&#xff08;Logistic Regression&#xff09;1.1.3、K近邻算法&#xff08;KNN&#xff09;1.1.4、决策树1.1.5、支持向量机&#xff08;SVM&#xff09;1.1.6、朴素贝叶斯 1.2、集成学习1.2.1、Boosting1&…

IFIX5.8安装教程

管理员身份运行&#xff1a; 安装&#xff1a; 下次安装的时候选择SCADA服务器&#xff0c;独立。然后下图就不会出现了。 重启电脑&#xff1a;

安装python需要多大内存,python下载安装包多大

大家好&#xff0c;小编来为大家解答以下问题&#xff0c;安装python需要多大内存&#xff0c;python安装占多大空间&#xff0c;现在让我们一起来看看吧&#xff01; 1、pytorch包有多大 938.79MB。pytorch包有938.79MB&#xff0c;pytorch离线安装包是一个不错的学习资源&am…

8款常见的自动化测试开源框架

在如今开源的时代&#xff0c;我们就不要再闭门造车了&#xff0c;热烈的拥抱开源吧&#xff01;本文针对性能测试、Web UI 测试、API 测试、数据库测试、接口测试、单元测试等方面&#xff0c;为大家整理了github或码云上优秀的自动化测试开源项目&#xff0c;希望能给大家带来…

OSPF路由协议(红茶三杯CCNA)

链路状态路由协议 OSPF&#xff08;开放式最短路径优先&#xff09;Open Shortest Path First 是一种链路状态路由协议&#xff0c;无路由循环&#xff08;全局拓扑&#xff09;&#xff0c;RFC2328 “开放”意味着非私有的 管理型距离&#xff1a;110 OSPF采用SPF算法计算到达…

Mnist分类与气温预测任务

目录 传统机器学习与深度学习的特征工程特征向量pytorch实现minist代码解析归一化损失函数计算图Mnist分类获取Mnist数据集&#xff0c;预处理&#xff0c;输出一张图像面向工具包编程使用TensorDataset和DataLoader来简化数据预处理计算验证集准确率 气温预测回归构建神经网络…

java商城系统和php商城系统对比

java商城系统和php商城系统是两种常见的电子商务平台&#xff0c;它们都具有一定的优势和劣势。那么&#xff0c;java商城系统和php商城系统又有哪些差异呢&#xff1f; 一、开发难度 Java商城系统和PHP商城系统在开发难度方面存在一定的差异。Java商城系统需要使用Java语言进…

数据结构 | 基本数据结构——栈

目录 一、线性数据结构 二、栈 2.1 何谓栈 2.2 栈抽象数据类型 2.3 用Python实现栈 2.4 匹配括号 2.5 普通情况&#xff1a;匹配符号 2.6 将十进制数转换成二进制数 3.7 前序、中序和后序表达式 3.7.1 从中序到后序的通用转换法 3.7.2 计算后序表达式 一、线性数据结…

[内网渗透]SUID提权

文章目录 [内网渗透]SUID提权0x01.什么是SUID&#xff1f;0x02.如何设置SUID&#xff1f;0x03.查找属主为root的SUID文件0x04.进行SUID提权1.find提权2.vim/vi/vim.tiny 以root权限修改文件3.bash提权4.less/more执行系统命令5.nano以root权限修改文件6.awk执行系统命令7.cp以r…

开源计算机视觉库OpenCV详解

目录 1、概述 2、OpenCV详细介绍 2.1、OpenCV的起源 2.2、OpenCV开发语言 2.3、OpenCV的应用领域 3、OpenCV模块划分 4、OpenCV源码文件结构 4.1、根目录介绍 4.2、常用模块介绍 4.3、CUDA加速模块 5、OpenCV配置以及Visual Studio使用OpenCV 6、关于Lena图片 7、…

LLM-Blender:大语言模型也可以进行集成学习

最近在看arxiv的时候发现了一个有意思的框架&#xff1a;LLM-Blender&#xff0c;它可以使用Ensemble 的方法来对大语言模型进行集成。 官方介绍如下&#xff1a;LLM-Blender是一个集成框架&#xff0c;可以通过利用多个开源大型语言模型(llm)的不同优势来获得始终如一的卓越性…

TCP如何保证服务的可靠性

TCP如何保证服务的可靠性 确认应答超时重传流量控制滑动窗口机制概述发送窗口和接收窗口的工作原理几种滑动窗口协议1比特滑动窗口协议&#xff08;停等协议&#xff09;后退n协议选择重传协议 采用滑动窗口的问题&#xff08;死锁可能&#xff0c;糊涂窗口综合征&#xff09;死…

ESP32 官方AT固件编译(从零开始环境搭建到编译完成全过程)

1、下载VMware免费版 https://download3.vmware.com/software/WKST-PLAYER-1702/VMware-player-full-17.0.2-21581411.exe 2、下载Ubuntu &#xff08;ubuntu-22.04.2-desktop-amd64.iso&#xff09;** https://releases.ubuntu.com/jammy/ubuntu-22.04.2-desktop-amd64.iso…