k8s基于gitlab部署only office

该博客详细介绍了如何利用GitLab在Kubernetes(K8s)集群上部署ONLYOFFICE,包括MySQL数据库的配置,文件服务器、邮件服务器、控制面板和社区服务器的设置,以及在部署过程中遇到的‘打开文件暂时无法访问’和‘无法注册用户’的问题解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

自备Dockerfile,docker-compose.yaml,gitlab-ci.yml文件
Dockerfile可以如下 (我已经把镜像那部分改过来了)

FROM onlyoffice/mailserver

部署MySQL

1.创建本地映射目录

sudo mkdir -p "/app/onlyoffice/mysql/conf.d";
sudo mkdir -p "/app/onlyoffice/mysql/data";
sudo mkdir -p "/app/onlyoffice/mysql/initdb";
sudo mkdir -p  /app/onlyoffice/mysql/log
sudo chmod -R 777 /app/onlyoffice/mysql/log

2.1创建配置文件

echo "[mysqld]
default_authentication_plugin=mysql_native_password
sql_mode = 'NO_ENGINE_SUBSTITUTION'
max_connections = 1000
max_allowed_packet = 1048576000
group_concat_max_len = 2048
log-error = /var/log/mysql/error.log" > /app/onlyoffice/mysql/conf.d/onlyoffice.cnf

2.2创建将生成用户并向其颁发权限的 SQL 脚本。

echo "create user 'onlyoffice'@'%' identified by '123456'; 
create user 'mail_admin'@'%' identified by '123456';
GRANT ALL PRIVILEGES ON * . * TO 'root'@'%' IDENTIFIED BY '123456';
alter user 'root'@'%' identified with mysql_native_password by '123456';
grant all privileges on *.* to 'onlyoffice'@'%' with grant option;
grant all privileges on *.* to 'mail_admin'@'%' with grant option;
flush privileges;"> /app/onlyoffice/mysql/initdb/setup.sql

3.编写mysql的yaml文件(拉取密钥,按自己配置的来)

apiVersion: apps/v1
kind: Deployment
metadata:
  name: $${
   ONLY_NAME}-deployment
  namespace: $${
   ONLY_NAME}
  labels:
    app: $${
   ONLY_NAME}
    name: $${
   ONLY_NAME}
spec:
  replicas: 1
  selector:
    matchLabels:
      app: $${
   ONLY_NAME}
  template:
    metadata:
      labels:
        app: $${
   ONLY_NAME}
    spec:
      containers:
        - name: $${
   ONLY_NAME}
          image: mysql:8.0.29
          imagePullPolicy: IfNotPresent
          # 就绪状态检查
          readinessProbe:
            failureThreshold: 3
            initialDelaySeconds: 30
            periodSeconds: 15
            successThreshold: 2
            tcpSocket:
              port: 3306
            timeoutSeconds: 2
          # 存活状态检查
          livenessProbe:
            failureThreshold: 3
            initialDelaySeconds: 30
            periodSeconds: 15
            successThreshold: 1
            tcpSocket:
              port: 3306
            timeoutSeconds: 2
          env:
          - name: MYSQL_ROOT_PASSWORD
            value: "123456"
          - name: MYSQL_DATABASE
            value: "onlyoffice"
          ports:
            - name: mysql
              containerPort: 3306
          volumeMounts:
          - name: $${
   S3_BUCKET}-data
            mountPath: /var/lib/mysql
          - name: $${
   S3_BUCKET}-log
            mountPath: /var/log/mysql
          - name: $${
   S3_BUCKET}-conf
            mountPath: /etc/mysql/conf.d
          - name: $${
   S3_BUCKET}-initdb
            mountPath: /docker-entrypoint-initdb.d
      # 容器重启策略
      restartPolicy: Always
      # 镜像拉取秘钥,需要在rancher中提前配置
      imagePullSecrets:
        - name: $${
   IMAGE_PULL_SECRET}
      volumes:
      - name: $${
   S3_BUCKET}-conf
        hostPath:
          path: /app/onlyoffice/mysql/conf.d
      - name: $${
   S3_BUCKET}-initdb
        hostPath:
          path: /app/onlyoffice/mysql/initdb
      - name: $${
   S3_BUCKET}-data
        hostPath:
          path: /app/onlyoffice/mysql/data
      - name: $${
   S3_BUCKET}-log
        hostPath:
          path: /app/onlyoffice/mysql/log

4.编写MySQL的service文件

# service 为pod提供访问方式
apiVersion: v1
kind: Service
metadata:
  name:  $${
   ONLY_NAME}-service
  labels:
    app: $${
   ONLY_NAME}
spec:
  type: NodePort
  ports:
    - name: mysql
      port: 3306
      targetPort: 3306
      protocol: TCP
      nodePort: 32760
  selector:
    app: $${
   ONLY_NAME}

5.设置env数值

export ONLY_UI_PORT=32760
export ONLY_NAME=onlyofficemysql
export S3_BUCKET=onlyofficemysql

部署文件服务器

1.创建本地映射目录

sudo mkdir -p "/app/onlyoffice/DocumentServer/data";
sudo mkdir -p "/app/onlyoffice/DocumentServer/logs";

2.编写only office-document server的yaml文件(拉取密钥,按自己配置的来)

apiVersion: apps/v1
kind: Deployment
metadata:
  name: $${
   ONLY_NAME}-deployment
  namespace: $${
   ONLY_NAME}
  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值