使用k8s部署RainLoop-Webmail

news2024/11/16 9:24:50

说明

* rainloop最新源码官方下载地址:https://www.rainloop.net/downloads/
* 系统要求:https://www.rainloop.net/docs/system-requirements/
* 安装文档:https://www.rainloop.net/docs/installation/
* 更多详细资料请查看官方文档
* docker镜像构建方法来源github:https://github.com/sauloaldocker/docker-rainloop

在这里插入图片描述

config说明

* config下所有文件均来源于:https://github.com/sauloaldocker/docker-rainloop
* 只有php启动脚本不一致,脚本如下:
* 无用,仅供参考


#!/bin/sh
exec 2>&1
#exec /usr/sbin/php5-fpm --fpm-config /etc/php5/fpm/php-fpm.conf

exec /usr/sbin/php7.4-fpm --fpm-config /etc/php/7.4/fpm/php-fpm.conf

Dockerfile


## Debian 7,对应PHP5
##FROM ahmet2mir/debian:wheezy
##ENV RELEASE wheezy

#
## Debian 11,对应PHP7
#FROM debian:bullseye
#ENV RELEASE bullseye
#
#
#ENV DEBIAN_FRONTEND noninteractive
#ENV SHELL /bin/bash
#
## Curl extension
##RUN apt-get update && apt-get install -y nginx php5-fpm php5-curl php5-sqlite php5-json
#
## Update PHP extensions to a compatible version
#RUN apt-get update && apt-get install -y nginx php7.4-fpm php7.4-curl libsqlite3-dev php7.4-json
#

#
#
## Adding files
#ADD . /
#
#RUN mkdir -p /webapps/logs/rainloop && \
#    mkdir -p /etc/service/ && \
#    mv  /rainloop /webapps && \
#	find /webapps/rainloop -type d -exec chmod 755 {} \; && \
#	find /webapps/rainloop -type f -exec chmod 644 {} \; && \
#	chown -R www-data:www-data /webapps/rainloop && \
#	cp -f /config/nginx.conf /etc/nginx/nginx.conf &&  \
#	cp -f /config/nginx-rainloop.conf /etc/nginx/sites-available/rainloop.conf &&  \
#	ln -s /etc/nginx/sites-available/rainloop.conf /etc/nginx/sites-enabled/rainloop.conf && \
##	sed -i 's/;daemonize = yes/daemonize = no/g' /etc/php5/fpm/php-fpm.conf
#    sed -i 's/;daemonize = yes/daemonize = no/g'  /etc/php/7.4/fpm/php-fpm.conf
#
## "Configure services"
## Based on https://github.com/mingfang/docker-salt
#RUN for dir in /config/service/*;\
#    do echo $dir; chmod +x $dir/run $dir/log/run;\
#    ln -sf $dir /etc/service/; done
#
## Expose services
#EXPOSE 22 80

# 使用php5无法打包成功,使用php7可以成功打包但是无法正常启动
# 所以,直接使用原始镜像,再修改里面的rainloop源码,方便自定义二次开发改造
# 实际config下面的文件没有用到,只需要rainloop源码即可


# 基础镜像来源:https://github.com/sauloaldocker/docker-rainloop
FROM ahmet2mir/rainloop

## 基础镜像中的源码非最新版,这里直接删除原来文件替换为最新版的源码
RUN rm -rf /webapps/rainloop/*

## 添加新文件
ADD ./rainloop /webapps/rainloop

## 设置权限
RUN find /webapps/rainloop -type d -exec chmod 755 {} \;
RUN find /webapps/rainloop -type f -exec chmod 644 {} \;
RUN chown -R www-data:www-data /webapps/rainloop

# Expose services
EXPOSE 22 80

构建镜像

docker build -t rainloop:1001 -f Dockerfile .

Deployment.yaml

## 创建pvc
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pvc-rainloop-data-volume
  namespace: rainloop
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi
---
## 创建Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: rainloop
  name: rainloop
  namespace: rainloop
spec:
  progressDeadlineSeconds: 600
  replicas: 1
  selector:
    matchLabels:
      app: rainloop
  strategy:
    rollingUpdate:
      maxSurge: 50%
      maxUnavailable: 50%
    type: RollingUpdate
  template:
    metadata:
      labels:
        app: rainloop
    spec:
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
              - matchExpressions:
                  - key: project.node
                    operator: In
                    values:
                      - rainloop
      volumes:
        - name: timezone
          hostPath:
            path: /usr/share/zoneinfo/Asia/Shanghai
        - name: data-volume
          persistentVolumeClaim:
            claimName: pvc-rainloop-data-volume
      containers:
        - env:
            - name: HOSTNAME
              value: "rainloop"
            - name: TZ
              value: Asia/Shanghai
          image: rainloop:1001
          imagePullPolicy: IfNotPresent
          ports:
            - containerPort: 80
          name: rainloop
          hostname: rainloop
          terminationMessagePath: /dev/termination-log
          terminationMessagePolicy: File
          volumeMounts:
            - name: timezone
              mountPath: /etc/localtime
              # 将配置信息存在pvc中,防止重启后原来配置丢失
            - name: data-volume
              mountPath: /webapps/rainloop/data
      dnsPolicy: ClusterFirst
      restartPolicy: Always
      terminationGracePeriodSeconds: 30

## 创建service
---
apiVersion: v1
kind: Service
metadata:
  labels:
    app: service-rainloop
  name: service-rainloop
  namespace: rainloop
spec:
  ports:
    - name: rainloop
      port: 80
      targetPort: 80
      nodePort: 30080
  selector:
    app: rainloop
  sessionAffinity: None
  type: NodePort

使用

* 先登录管理后台进行配置:ip:port/?admin,例如:http://127.0.0.1:30080/?admin
* 默认账号:admin,默认密码:12345,注意及时登录后台修改默认密码



* 普通用户使用登录:ip:port,例如:http://127.0.0.1:30080

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

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

相关文章

CentOS Linux教程(7)--目录文件的创建、删除、移动、复制、重命名

文章目录 1. 创建目录、文件2. 删除目录、文件3. 移动目录、文件4. 复制目录、文件5. 重命名目录、文件 1. 创建目录、文件 使用mkdir创建目录: 使用touch创建文件: 2. 删除目录、文件 使用rm可以删除文件: 使用rm -f可以强制删除文件,…

状态机设计模式

1. 订单管理中存在的问题 订单管理中,订单存在未支付,派单中,服务中,已完成等等状态,所以在业务代码中,都是首先判断订单的状态,然后根据不同状态执行不同的逻辑。 在业务代码中对订单状态进行…

[Unity Demo]从零开始制作空洞骑士Hollow Knight第九集:制作小骑士基本的攻击行为Attack以及为敌人制作生命系统和受伤系统

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、制作小骑士基本的攻击行为Attack 1.制作动画以及使用UNITY编辑器编辑2.使用代码实现扩展新的落地行为和重落地行为3.使用状态机实现击中敌人造成伤害机制二…

移动端列表筛选封装

适合场景&#xff1a;Vue2vant 移动端项目&#xff0c;数据填充添加全部选项及相关逻辑处理&#xff0c;支持多选、单选以及筛选状态返回 效果图 选中交互 使用说明 <filter-box ref"filterBox" :isMultiple"true" //是否多选:params"waitData&q…

ant design vue实现表格序号递增展示~

1、代码实例 //current当前页数 //pageSize每页记录数 const columns [{title: 序号,width: 100,customRender: ({ index }) > ${index (current.value - 1) * pageSize.value 1},align: center,fixed: left,} ] 2、效果图

虚拟机:4、配置12.5的cuda和gromacs

前言&#xff1a;本机环境是win11&#xff0c;通过wsl2安装了ubuntu实例并已实现gpu直通&#xff0c;现在需要下载12.5的cuda 一、查看是否有gpu和合适的cuda版本 在ubuntu实例中输入 nvidia-smi输出如下&#xff1a; 说明该实例上存在gpu驱动&#xff0c;且适合的CUDA版本…

解决银河麒麟操作系统在单用户模式下根分区只读的问题

解决银河麒麟操作系统在单用户模式下根分区只读的问题 1、问题描述2、问题解决方法 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 在使用银河麒麟操作系统时&#xff0c;有时我们可能需要进入单用户模式来进行系统维护或修复。然而&#x…

软考高级:中台相关知识 AI 解读

中台&#xff08;Middle Platform&#xff09;是近年来在软件开发和企业架构中兴起的一种理念和架构模式&#xff0c;尤其在中国的互联网企业中得到了广泛应用。中台的核心思想是通过构建一个共享的服务和能力平台&#xff0c;支持前端业务的快速迭代和创新&#xff0c;从而提升…

企业职工薪资查询系统小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;员工管理&#xff0c;部门管理&#xff0c;工资信息管理&#xff0c;工资安排管理&#xff0c;考勤信息管理&#xff0c;交流论坛&#xff0c;系统管理 微信端账号功能包括&#xff1a;系统首页&#…

2024年最新 信息安全 标准 汇总

背景 信息安全标准是安全专家智慧的结晶&#xff0c;是安全最佳实践的概括总结&#xff0c;是非常好的入门/参考手册&#xff0c;是信息安全建设的理论基础和行动指南。 本页对TC260发布的所有信息安全标准&#xff0c;进行了分类汇总&#xff0c;并提供在线预览和批量下载&am…

【深度学习】03-神经网络01-4 神经网络的pytorch搭建和参数计算

# 计算模型参数,查看模型结构,我们要查看有多少参数&#xff0c;需要先安装包 pip install torchsummary import torch import torch.nn as nn from torchsummary import summary # 导入 summary 函数&#xff0c;用于计算模型参数和查看模型结构# 创建神经网络模型类 class Mo…

【ComfyUI】控制光照节点——ComfyUI-IC-Light-Native

原始代码&#xff08;非comfyui&#xff09;&#xff1a;https://github.com/lllyasviel/IC-Light comfyui实现1&#xff08;600星&#xff09;&#xff1a;https://github.com/kijai/ComfyUI-IC-Light comfyui实现2&#xff08;500星&#xff09;&#xff1a;https://github.c…

【QT】QSS基础

欢迎来到Cefler的博客&#x1f601; &#x1f54c;博客主页&#xff1a;折纸花满衣 &#x1f3e0;个人专栏&#xff1a;QT 目录 &#x1f449;&#x1f3fb;基本语法&#x1f449;&#x1f3fb;从⽂件加载样式表&#x1f449;&#x1f3fb;选择器伪类选择器 &#x1f449;&…

动手学深度学习9.1. 门控循环单元(GRU)-笔记练习(PyTorch)

本节课程地址&#xff1a;门控循环单元&#xff08;GRU&#xff09;_哔哩哔哩_bilibili 本节教材地址&#xff1a;9.1. 门控循环单元&#xff08;GRU&#xff09; — 动手学深度学习 2.0.0 documentation (d2l.ai) 本节开源代码&#xff1a;...>d2l-zh>pytorch>chap…

K8S服务发布

一 、服务发布方式对比 二者主要区别在于&#xff1a; 1. 部署复杂性&#xff1a;传统的服务发布方式通常涉及手动配置 和管理服务器、网络设置、负载均衡等&#xff0c;过程相对复 杂且容易出错。相比之下&#xff0c;Kubernetes服务发布方式 通过使用容器编排和自动化部署工…

高灵敏度电容式触摸IC在弹簧触控按键中的应用

电容式触摸IC-弹簧触控按键-是通过检测人体与传感器之间的电容变化来实现触摸控制。这种技术具有高灵敏度、稳定性好、防水性强等优点&#xff0c;广泛应用于家用电器、消费电子、工业控制等领域。 弹簧触控按键的特点&#xff1a; 1. 高灵敏度&#xff1a;即使隔着绝缘材料&a…

Java语言的Springboot框架+云快充协议1.5+充电桩系统+新能源汽车充电桩系统源码

介绍 云快充协议云快充1.5协议云快充协议开源代码云快充底层协议云快充桩直连桩直连协议充电桩系统桩直连协议 有需者咨询&#xff0c;非诚勿扰&#xff1b; 软件架构 1、提供云快充底层桩直连协议&#xff0c;版本为云快充1.5&#xff0c;对于没有对接过充电桩系统的开发者…

[vulnhub] Jarbas-Jenkins

靶机链接 https://www.vulnhub.com/entry/jarbas-1,232/ 主机发现端口扫描 扫描网段存活主机&#xff0c;因为主机是我最后添加的&#xff0c;所以靶机地址是135的 nmap -sP 192.168.75.0/24 // Starting Nmap 7.93 ( https://nmap.org ) at 2024-09-21 14:03 CST Nmap scan…

求职Leetcode题目(11)

1.最长连续序列 解题思路: 方法一&#xff1a; • 首先对数组进行排序&#xff0c;这样我们可以直接比较相邻的元素是否连续。• 使用一个变量 cur_cnt 来记录当前的连续序列长度。• 遍历排序后的数组&#xff1a; 如果当前元素与前一个元素相等&#xff0c;则跳过&#xf…

文档矫正算法:DocTr++

文档弯曲矫正&#xff08;Document Image Rectification&#xff09;的主要作用是在图像处理领域中&#xff0c;对由于拍摄、扫描或打印过程中产生的弯曲、扭曲文档进行校正&#xff0c;使其恢复为平整、易读的形态。 一. 论文和代码 论文地址&#xff1a;https://arxiv.org/…