前言
自备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}