如何用Dockerfile部署LAMP架构
目录
构建LAMP镜像(Dockerfile)
第一步 创建工作目录
第二步 编写dockerfile文件
Dockerfile文件配置内容
第三步 编写网页执行文件
第四步 编写启动脚本
第五步 赋权并且构建镜像
第六步 检查镜像
第七步 创建容器
第八步 浏览器测试
构建LAMP镜像(Dockerfile)
第一步 创建工作目录
mkdir -p /root/dockerfile/lamp
第二步 编写dockerfile文件
cd /root/dockerfile/lamp
vim Dockerfile
Dockerfile文件配置内容
FROM centos:7
MAINTAINER Liu
#安装Apache
RUN yum -y install zlib-devel gcc gcc-c++ pcre-devel wget perl make
run wget http://archive.apache.org/dist/httpd/httpd-2.2.17.tar.gz
run tar xf httpd-2.2.17.tar.gz
workdir httpd-2.2.17
run ./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi && make && make install
expose 80#安装Mysql
run yum -y install ncurses-devel
run wget http://www.cmake.org/files/v3.7/cmake-3.7.1.tar.gz
run tar xf cmake-3.7.1.tar.gz
workdir cmake-3.7.1
run ./configure && make && make install
run groupadd mysql
run useradd -M -s /sbin/nologin -g mysql mysql
run wget http://downloads.mysql.com/archives/mysql-5.5/mysql-5.5.22.tar.gz
run tar xf mysql-5.5.22.tar.gz
workdir mysql-5.5.22
run cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DSYSCONFDIR=/etc -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all && make && make install
run chown -R mysql:mysql /usr/local/mysql/
run rm -rf my.cnf
run cp support-files/my-medium.cnf /etc/my.cnf
run /usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data/
run cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld
run chmod 777 /etc/rc.d/init.d/mysqld
expose 3306
workdir /
run wget --no-check-certificate https://sourceforge.net/projects/mcrypt/files/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz
run tar xf libmcrypt-2.5.8.tar.gz
workdir libmcrypt-2.5.8
run ./configure && make && make install
run ln -s /usr/local/lib/libmcrypt.* /usr/lib
workdir /
run wget http://downloads.sourceforge.net/mhash/mhash-0.9.9.9.tar.gz
run tar xf mhash-0.9.9.9.tar.gz
workdir mhash-0.9.9.9
run ./configure && make && make install
run ln -s /usr/local/lib/libmhash* /usr/lib
workdir /
run wget http://downloads.sourceforge.net/mcrypt/mcrypt-2.6.8.tar.gz
run tar xf mcrypt-2.6.8.tar.gz
workdir mcrypt-2.6.8
ENV LD_LIBRARY_PATH /usr/local/lib:$LD_LIBRARY_PATH
run ./configure && make && make install
#安装PHP
run wget --no-check-certificate https://www.php.net/distributions/php-5.3.28.tar.gz
run yum -y install libpng libpng-devel pcre pcre-devel libxml2-devel libjepeg-devel
run tar xf php-5.3.28.tar.gz
workdir php-5.3.28
run ./configure --prefix=/usr/local/php5 --with-mcrypt --with-apxs2=/usr/local/httpd/bin/apxs --with-mysql=/usr/local/mysql/ --with-config-file-path=/usr/local/php5 --enable-mbstring && make && make install
run cp php.ini-development /usr/local/php5/php.ini
run sed -i '226s/short_open_tag = Off/short_open_tag = On/g' /usr/local/php5/php.ini
workdir /
run wget http://downloads.zend.com/guard/5.5.0/ZendGuardLoader-php-5.3-linux-glibc23-x86_64.tar.gz
run tar xf ZendGuardLoader-php-5.3-linux-glibc23-x86_64.tar.gz
workdir ZendGuardLoader-php-5.3-linux-glibc23-x86_64/php-5.3.x
run cp ZendGuardLoader.so /usr/local/php5/lib/php/
run echo "zend_extension=/usr/local/php5/lib/php/ZendGuardLoader.so" >> /usr/local/php5/php.ini
run echo "zend_loader.enable=1" >> /usr/local/php5/php.ini
run ln -s /usr/local/php5/bin/* /usr/local/bin
run ln -s /usr/local/php5/sbin/* /usr/local/sbin
add test.php /usr/local/httpd/htdocs/
add index.php /usr/local/httpd/htdocs/
run echo "LoadModule php5_module modules/libphp5.so" >> /usr/local/httpd/conf/httpd.conf
run echo "AddType application/x-httpd-php .php" >> /usr/local/httpd/conf/httpd.conf
run echo "DirectoryIndex index.php index.html" >> /usr/local/httpd/conf/httpd.conf
add yx.sh /yx.sh
expose 9000
cmd ["/yx.sh"]
第三步 编写网页执行文件
vim test.php
<?php
phpinfo();
?>
vim index.php
<?php
phpinfo();
?>
第四步 编写启动脚本
vim yx.sh
#!/bin/bash
/usr/local/httpd/bin/httpd
/usr/local/mysql/bin/mysqld_safe
/usr/local/php5/sbin/php-fpm
第五步 赋权并且构建镜像
chmod 777 yx.shdocker build -t centos7:lamp /root/dockerfile/lamp/
第六步 检查镜像
docker images | grep lamp
第七步 创建容器
docker run -d -it --name lamp -p 8005:80 【 】
docker ps | grep lamp
第八步 浏览器测试
相关文章:

如何用Dockerfile部署LAMP架构
目录 构建LAMP镜像(Dockerfile) 第一步 创建工作目录 第二步 编写dockerfile文件 Dockerfile文件配置内容 第三步 编写网页执行文件 第四步 编写启动脚本 第五步 赋权并且构建镜像 第六步 检查镜像 第七步 创建容器 第八步 浏览器测试 构建LA…...

基于量子粒子群算法(QPSO)优化LSTM的风电、负荷等时间序列预测算法(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

SQL Server软件安装包分享(附安装教程)
目录 一、软件简介 二、软件下载 一、软件简介 SQL Server是一种关系型数据库管理系统,由美国微软公司开发。它被设计用于存储、管理和查询数据,被广泛应用于企业级应用、数据仓库和电子商务等场景。 以下是SQL Server软件的主要特点和功能࿱…...

基于Django的博客管理系统
1、克隆仓库https://gitee.com/lylinux/DjangoBlog.git 若失效:https://gitee.com/usutdzxy/DjangoBlog.git 2、环境安装 pip install -Ur requirements.txt3、修改djangoblog/setting.py 修改数据库配置,其他的步骤就按照官方文档。 DATABASES {def…...

windows系统依赖环境一键安装
window系统程序依赖库,可以联系我获取15958139685 脚本代码如下,写到1. bat文件中,双击直接运行,等待安装完成即可 Scku.exe -AVC.exe /SILENT /COMPONENTS"icons,ext\reg\shellhere,assoc,assoc_sh" /dir%1\VC...
centos7安装nacos
解决 Nacos 国内下载速度缓慢的问题 方案 1. 选择相应的版本源码下载 1.1 依次点击 1、2、3 选中我们的最新稳定版本 1.4.0 1.2 点击下载 ZIP、或者 clone 也行,这里都可以 2. 本地编译 2.1 预备环境准备 2.2 解压编译 3. 启动验证 3.1 解压 3.2 启动服务器 3…...

【python】python智能停车场数据分析(代码+数据集)【独一无二】
👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉公众号👈:测试开发自动化【获取源码商业合作】 👉荣__誉👈:阿里云博客专家博主、5…...
如何使用Redis来防止穿透、击穿和雪崩问题
推荐阅读 AI文本 OCR识别最佳实践 AI Gamma一键生成PPT工具直达链接 玩转cloud Studio 在线编码神器 玩转 GPU AI绘画、AI讲话、翻译,GPU点亮AI想象空间 资源分享 史上最全文档AI绘画stablediffusion资料分享 AI绘画关于SD,MJ,GPT,SDXL百科全书 「java、python面试题」…...

以getPositionList为例,查找接口函数定义及接口数据格式定义
job-app-master/pages/index/index.vue中299行 async getPositionList(type refresh, pulldown false) {this.status 请求中;if (type refresh) {this.query.page 1;} else {this.query.page;}let res await this.$apis.getPositionList(this.query);if (res) {if (type …...

一生一芯8——在github上添加ssh key
为在github上下载代码框架,这里在github上使用ssh key进行远程连接,方便代码拉取 参照博客https://blog.csdn.net/losthief/article/details/131502734 本机 系统ubuntu22.04 git 版本2.34.1 本人是第一次配置,没有遇到奇奇怪怪的错误&…...
2023年6月电子学会Python等级考试试卷(一级)答案解析
青少年软件编程(Python)等级考试试卷(一级) 一、单选题(共25题,共50分) 1. 可以对Python代码进行多行注释的是?( ) A. #...

ppt如何转pdf文档?用这个方法可将ppt转pdf
在现代社会中,PPT(幻灯片)已成为一种常见的演示工具,被广泛应用于学术、商务、培训等领域。然而,PPT文件的使用和分享存在一些问题,例如文件格式不兼容、内容修改易被篡改等。为了解决这些问题,将PPT转换为PDF格式已成…...

Hope.money:新兴DeFi项目如何重新定义稳定币生态的未来?
联储加息导致金融市场紧缩,Terra、3AC、FTX等知名中心化机构未能妥善应对而暴雷,并重创了整个加密货币市场,导致参与者损失惨重。这些事件揭示了中心化机构的局限,投资者对其资产掌控权的担忧愈发强烈。 自2018年首个DeFi协议Com…...

使用 S3 生命周期精确管理对象生命周期
在亚马逊工作这些年,我发现 S3 的生命周期配置是管理对象生命周期的重要但复杂的工具。在这篇文章中,我将利用实战经验,深入剖析生命周期,从核心概念到实际应用。 亚马逊云科技开发者社区为开发者们提供全球的开发技术资源。这里有技术文档、开发案例、技术专栏、培训视频、活…...

RocketMQ零拷贝原理
1 PageCache ●由内存中的物理page组成,其内容对应磁盘上的block。 ●page cache的大小是动态变化的。 ●backing store:cache缓存的存储设备。 ●一个page通常包含多个block,而block不一定是连续的。 1.1读Cache ●当内核发起一个读请求时&#x…...
HTML <tbody> 标签
实例 带有 thead、tbody 以及 tfoot 元素的 HTML 表格: <table border="1"><thead><tr><th>Month</th><th>Savings</th></tr></thead><tfoot><tr><td>Sum</td><td>$180<…...

4.22 TCP 四次挥手,可以变成三次吗?
目录 为什么 TCP 挥手需要四次呢? 粗暴关闭 vs 优雅关闭 close函数 shotdown函数 什么情况会出现三次挥手? 什么是 TCP 延迟确认机制? TCP 序列号和确认号是如何变化的? 在一些情况下, TCP 四次挥手是可以变成 T…...
鲁棒性简述
鲁棒性(Robustness)是指系统或算法对于异常情况或不良条件的抵抗能力和适应能力。一个鲁棒性强的系统能够在面对异常、噪声、错误或意外情况时,仍能够保持高效的运行或输出可接受的结果。 鲁棒性是在设计和开发系统时要考虑的一个重要特性&am…...
复习leetcode
460. LFU 缓存 31. 下一个排列 322. 零钱兑换 662. 二叉树最大宽度 43. 字符串相乘...
从聚类(Clustering)到异常检测(Anomaly Detection):常用无监督学习方法的优缺点
一、引言 无监督学习是机器学习的一种重要方法,与有监督学习不同,它使用未标记的数据进行训练和模式发现。无监督学习在数据分析中扮演着重要的角色,能够从数据中发现隐藏的模式、结构和关联关系,为问题解决和决策提供有益的信息。…...

网络编程(Modbus进阶)
思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...

C++实现分布式网络通信框架RPC(3)--rpc调用端
目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中,我们已经大致实现了rpc服务端的各项功能代…...
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以? 在 Golang 的面试中,map 类型的使用是一个常见的考点,其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...
STM32+rt-thread判断是否联网
一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...
在四层代理中还原真实客户端ngx_stream_realip_module
一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡(如 HAProxy、AWS NLB、阿里 SLB)发起上游连接时,将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后,ngx_stream_realip_module 从中提取原始信息…...
OkHttp 中实现断点续传 demo
在 OkHttp 中实现断点续传主要通过以下步骤完成,核心是利用 HTTP 协议的 Range 请求头指定下载范围: 实现原理 Range 请求头:向服务器请求文件的特定字节范围(如 Range: bytes1024-) 本地文件记录:保存已…...

SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现
摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序,以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务,提供稳定高效的数据处理与业务逻辑支持;利用 uniapp 实现跨平台前…...
Java入门学习详细版(一)
大家好,Java 学习是一个系统学习的过程,核心原则就是“理论 实践 坚持”,并且需循序渐进,不可过于着急,本篇文章推出的这份详细入门学习资料将带大家从零基础开始,逐步掌握 Java 的核心概念和编程技能。 …...
[Java恶补day16] 238.除自身以外数组的乘积
给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度…...
基于matlab策略迭代和值迭代法的动态规划
经典的基于策略迭代和值迭代法的动态规划matlab代码,实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...