php和nginx镜像合并 && 代码打包到镜像 —— k8s从入门到高并发系列教程 (二)

2023-10-29

上文使用了nginx和php-fpm两个镜像组装了nginx+php环境,然而实际企业的微服务架构,nginx和php-fpm是被统一看作一个微服务供其他服务调用的;另外,配置文件和源代码也不会通过映射到容器中的方式进行,而是打包到了企业的私有镜像仓库中,最后直接把镜像部署到集群。

本教程以php-fpm作为基础镜像,安装nginx后,打包配置文件和源代码形成新的镜像,并测试运行。

准备阶段

由于php:7.2-fpm镜像使用debian作为基础操作系统,需要先替换一下debian仓库源为国内源,便于安装nginx等其他软件

deb http://mirrors.163.com/debian/ buster main non-free contrib
deb http://mirrors.163.com/debian/ buster-updates main non-free contrib
deb http://mirrors.163.com/debian/ buster-backports main non-free contrib
deb-src http://mirrors.163.com/debian/ buster main non-free contrib
deb-src http://mirrors.163.com/debian/ buster-updates main non-free contrib
deb-src http://mirrors.163.com/debian/ buster-backports main non-free contrib
deb http://mirrors.163.com/debian-security/ buster/updates main non-free contrib
deb-src http://mirrors.163.com/debian-security/ buster/updates main non-free contrib

创建sources.list文件替换镜像内的 /etc/apt/sources.list 文件

由于docker容器运行后,有且必须只有一个进程在前台运行,当这个前台运行的程序暂停运行,容器也就会被销毁。我们规划容器运行后,让php-fpm进程后台运行,nginx进程前台运行。这样的好处是便于在开发环境,研发可以进入容器直接修改代码,重启php-fpm而容器不被销毁。

#!/bin/sh

php-fpm -D
nginx -g 'daemon off;'

创建entry.sh文件,在容器启动的时候运行,给予该文件可执行权限 

chmod +x entry.sh

编写Dockerfile文件

FROM php:7.2-fpm

# 设置时区使用北京时间
ENV TZ=Asia/Shanghai

# 替换debian国内源,便于快速安装nginx
COPY sources.list /etc/apt/sources.list

# 安装nginx,删除配置文件中的 /etc/nginx/sites-enabled 目录
RUN apt update \
    && apt install -y nginx \
    && rm -rf /etc/nginx/sites-enabled

# 拷贝nginx配置文件
ADD conf /etc/nginx/conf.d

# 设置工作目录
WORKDIR /src

# 拷贝项目源文件,打包镜像
ADD www ./

# 注意点:文件权限必须是 www-data 组,nginx和php-fpm才有权限访问
RUN chown -R www-data:www-data ./

# 执行容器启动后的命令
ADD entry.sh /
ENTRYPOINT ["/entry.sh"]

注意点:

*****文件权限必须是 www-data 组,nginx和php-fpm才有权限访问*****

打包运行镜像

docker build -t php-fpm:test .
docker run -p 8083:80 -d php-fpm:test

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

php和nginx镜像合并 && 代码打包到镜像 —— k8s从入门到高并发系列教程 (二) 的相关文章

  • 如何在 .css 文件中使用 php 变量

    我有一个名为test css我想用它 var var is at test php test css附于test php 我的结构是这样的 test php 这是 test css test css
  • 改变了 (un)serialize() 的行为?

    编辑 问题是现在已记录的 php 错误 https bugs php net bug php id 71617 https bugs php net bug php id 71617感谢您找到那个 Danack 我刚刚将应用程序从 PHPH
  • PHP CLI 有几秒钟的延迟

    当我在 CLI 模式下运行 PHP 时 CentOS 6 5 下的 PHP 5 6 6 使用 VirtualBox 作为虚拟机运行 即使我只检查版本并且禁用 php ini 文件 也会有几秒钟的延迟 time php n v PHP 5 6
  • 如何在 PHP 中按字母顺序比较 2 个字符串?

    标题说什么 具体来说 如果我有 array1 name zoo array2 name fox 我怎样才能确定按字母顺序排列 array2的名字应该出现在上面 array1 s Use strcmp http www php net str
  • IOS 向特定用户推送通知?

    是否可以向特定设备发送 iOS 推送通知 我构建了一个论坛类型的应用程序 用户可以创建问题 其他人可以回答它 我需要向提出问题的特定用户发送 iOS 推送通知 通知他们问题已得到解答 这可以通过 PHP 或其他方法来完成吗 是的 您绝对可以
  • 销毁Session但保留flashdata

    我在用坦克验证 http www konyukhov com soft tank auth 用于我的 CI 1 7 3 应用程序中的用户管理 一切工作正常 但我正在尝试设置flash message当用户注销时显示 问题是 this gt
  • JS 中的模板?

    我们都喜欢简单 结构化且易于遵守的代码 我们试图在外观和逻辑之间带来差异 例如 在 PHP 中 我们可以使用模板机制 即创建一个带有 php 标签的 html 格式的文件 该文件使用一些预定义的变量 这些变量可以通过逻辑负责任的脚本来使用
  • WordPress、PHP、URL 编码问题

    Wordpress 提供了一个名为 the permalink 的函数 您猜对了 在帖子循环中返回给定帖子的永久链接 我正在尝试对该永久链接进行 URL 编码 当我执行此代码时 它以 HTML 形式生成以下结果 http
  • 如果我有循环引用,我可以触发 PHP 垃圾回收自动发生吗?

    我似乎记得一种设置方法 destruct对于一个类 以这样的方式确保一旦外部对象超出范围 循环引用就会被清除 然而 我构建的简单测试似乎表明这并不像我预期 希望的那样 有没有一种方法可以设置我的类 以便当最外面的对象超出范围时 PHP 可以
  • 如何在 Windows 上以纯 PHP 形式提取 .tar 文件?

    我有一个 PHP 脚本 我想在 Windows 上运行 我需要提取 tar 文件 如何提取 tar 文件 我知道 PharData 类 它可以在 Linux 上运行 但不能在 Windows 上运行 我的脚本就死了 没有错误输出或任何东西
  • 致命错误:在非对象上调用成员函数 FetchRow()

    这是我的错误消息致命错误 Call to a member function FetchRow on a non object in C AppServ www hfix include care api classes class min
  • date() 和 strtotime 的问题

    这是我所拥有的 str 12 25 2009 echo date Y m d strtotime str 这会产生 1969 12 31 而不是 2009 12 25 如果我将 str var 设置为 01 01 2009 我将得到正确的
  • 在 foreach 循环中使用 next

    我正在使用 foreach 循环数组 在特定情况下 我需要在迭代到达下一个元素 如预测 之前知道下一个元素的值 为此 我计划使用该功能next http www php net manual en function next php 在文档
  • 将数组值翻转为数组键的函数? [复制]

    这个问题在这里已经有答案了 有没有一个php函数可以接受下面的数组 array size 4 1 gt string 0 6 gt string 1 7 gt string 1 8 gt string 7 将其翻转到下面的数组 请注意 数组
  • 我使用自制程序安装nginx,如何添加第三个模块?

    我在我的Mac上brew install nginx 但我不知道配置文件在哪里 并且我使用 brew install nginx add module xxxx 来添加模块不起作用 请帮助 The nginx 已满brew Formula
  • 如何摆脱 WordPress function.php 中的“SiteLock-PHP-FILEHACKER-of.UNOFFICIAL”

  • 为什么在这个数组中 NULL 递减而不是负数?

    我已经尝试过这段代码 a array fill 0 4 NULL a 0 a 1 a 2 a 3 var dump a Result array 4 0 gt int 1 1 gt int 1 2 gt NULL 3 gt NULL 为什么
  • cURL 错误 28:5001 毫秒后解析超时

    我使用 WordPress 最近将我的网站从 cpanel 主机移动到带有 directadmin 面板的 Linux 服务器 转账后立即发现客户在通过EDD插件下载时出现以下错误 cURL 错误 28 5001 毫秒后解析超时 我也遇到了
  • 上传并 POST 文件到 PHP 页面

    我需要一种上传文件并将其 POST 到 php 页面的方法 php 位于 apache 服务器上 我在我的桌面应用程序中使用这个 C 代码 这是一个c代码的套接字 当我执行程序时 可以得到 文件大小为772906 打开服务器正常 文件大小为
  • 我怎样才能让我的卷发在刮擦之前等待几秒钟?

    所以我试图从网站上抓取一些数据 有一些必须被删除的名字列表 发生的情况是 如果有 15 个名字需要被删除 其中只有 5 个名字被删除 当我检查原始站点时 他们也以类似的方式加载数据 第一次加载网站时 仅显示五个名字 重新加载时会显示 10

随机推荐

  • FunctionDeclarationUtil

    import com google common collect Lists import java io File import java io FileFilter import java io IOException import j
  • python学习笔记——file(文件)、OS模块操作、random模块

    1文件访问方法 1 1 open 函数 打开文件并返回文件对象 基本格式 open file path mode encoding 参数说明 参数 含义 file path 文件路径 必须要有 mode 文件打开方式 encoding 字符
  • 小程序接入流量主、banner广告、激励广告

    小程序接入广告 1 什么是微信小程序广告 2 流量主开通流程 3 微信小程序流量主开通以及添加广告步骤 1 接入banner广告 2 接入激励广告 1 什么是微信小程序广告 2 流量主开通流程 申请成为流量主后才能接入广告 首先进入小程序后
  • Shell 从入门到精通(一)

    1 脚本的基本格式 新建一个文件vim wenwen 往文件里写如下代码 bin bash echo wenwen successful 给文件权限 执行文件 chmod 755 wenwen wenwen 2 脚本的执行方式 每个程序都有
  • 最大类间方差法matlab_用matlab进行功率谱分析的几种方法

    0 前言 有很多种功率谱分析算法 如周期图法 welch法 yuler法 汤姆森多窗口谱 mtm 法 协方差谱 cov 法 修正协方差 mcov 法 burg法 多信号分类 MUSIC 特征向量法 在matlab中 为了进行信号功率谱分析
  • 【Mo&AI TIME 人工智能技术博客】将科幻照进现实——元宇宙数字人的当下与未来

    本篇文章内容转载于 AI TIME论道 公众号 秉持着合作共享的信念 希望给热爱人工智能的你们 提供更全面 前沿的人工智能和学科发展资讯 2023年1月11日 PhD Debate 14特别邀请了来自上海交通大学博士生马子阳 香港科技大学博
  • Python re模块 findall()函数(算是一个坑点)

    1 先说一下findall 函数的两种表示形式 import re kk re compile r d kk findall one1two2three3four4 1 2 3 4 注意此处findall 的用法 可传两个参数 kk re
  • QT框架简单分析

    基本带窗口创建的项目具备以下几个文件 pro 工程管理文件 用于管理各种模块 名字 连接等 在后续添加 通讯模块 多媒体 数据库等模块时需要用到 头文件 各种 h结尾的头文件 如widget h 源文件 主函数main cpp 和函数文件如
  • 在Python中,我们可以使用pyzmq模块来实现ZMQ编程

    随着现代计算机技术的不断进步 人们对于通信技术的要求越来越高 而在这个领域中 ZeroMQ 简称ZMQ 被誉为是最为出色的一个库之一 它的出色之处在于 它为我们提供了一套非常灵活 高效的通信协议 可以让我们在不同的网络环境下 以各种方式进行
  • 0长度char数组的使用

    需要引起注意的 ISO IEC 9899 1999里面 这么写是非法的 这个仅仅是GNU C的扩展 gcc可以允许这一语法现象的存在 结构体最后使用0或1的长度数组的原因 主要是为了方便的管理内存缓冲区 如果你直接使用指针而不使用数组 那么
  • 彻底关闭Windows Defender&Windows 更新

    目录 关闭Windows Defender 方法一 方法二 关闭Windows Updata 自测用这个方法关闭 还是莫名其妙会被杀 在加一个办法 关闭Windows Defender 方法一 1 使用WIN R打开运行对话框 输入rege
  • C++:给定一个字符串,验证是否为回文,只考虑字母和数字字符,忽略字母大小写。

    include
  • 【微信小程序】微信小程序实现点击分享链接进入的分享页面左上角是返回按钮

    首先先和你们说这是可以实现而且非常简单 接下来我们就来看看如何实现这种需求的 首先我们需要配置分享链接 例如 detail js页面 Page onShareAppMessage function res var url 页面参数 if r
  • Spring中的18个注解,你会几个?

    点击上方 Java之间 选择 置顶或者星标 你关注的就是我关心的 作者 Java的小本家 Controller 标识一个该类是Spring MVC controller处理器 用来创建处理http请求的对象 RestController S
  • 结合AG-Grid二次封装element-plus的el-table表格

    MyTable组件封装 路径 conponents MyTable index vue template
  • 第三周课程总结&实验报告一

    一 实验报告 1 打印输出所有的 水仙花数 所谓 水仙花数 是指一个3位数 其中各位数字立方和等于该数本身 例如 153是一个 水仙花数 I 实验代码 public class text public static void main St
  • 操作系统复习题

    一 填空题 1 通常所说操作系统的四大模块是指处理机管理 存储管理 设备管理 文件 管理 2 进程实体是由 进程控制块 PCB 程序段和数据段这三部分组成 3 文件系统中 空闲存储空间的管理方法有空闲表法 空闲链表法 位示图法和 成组链接法
  • 7_2,24位真彩模式(2013-2-27)

    同理 24位为3通道 3字节 但是经过测试 有问题 不支持24位 7 3 32位真彩模式 32位与16位不同之处 32位分为ARGB和XRGB 各8位 ARGB中前8位为透明色 XRGB前8位为了对齐 一般清为0 define RGB32B
  • JDBC流程

    JDBC JAVA 访问数据库的技术 Jdbc是一种Java连接数据库技术 Java database connectity 它是 Java 提供的一些接口 这些接口大部分是数据库厂商提供的 jar包 我们要做的 是连接数据库以后 如何使用
  • php和nginx镜像合并 && 代码打包到镜像 —— k8s从入门到高并发系列教程 (二)

    上文使用了nginx和php fpm两个镜像组装了nginx php环境 然而实际企业的微服务架构 nginx和php fpm是被统一看作一个微服务供其他服务调用的 另外 配置文件和源代码也不会通过映射到容器中的方式进行 而是打包到了企业的