MCSManager 的 Docker 镜像
latest
:最新版本9.6.0
:指定版本9.6
:指定主版本和次版本,将指向最新的 Patch 版本9
:指定主版本,将指向当前大版本号下的最新版本sha-e278f4c
: 指定 Commit
使用 Docker CLI
docker run -it -d \
--name mcsm-web \
-p 23333:23333 \
-v /path/to/data:/data/mcsmanager/web/data \
alisaqaq/mcsmanager-web:latest
使用 Docker Compose
version: "3"
services:
mcsm-web:
image: alisaqaq/mcsmanager-web:latest
container_name: mcsm-web
ports:
- "23333:23333"
volumes:
- /path/to/data:/data/mcsmanager/web/data
restart: unless-stopped
使用 Docker CLI
docker run -it -d \
--name mcsm-daemon \
-p 24444:24444 \
-v /path/to/data:/data/mcsmanager/daemon/data \
-v /var/run/docker.sock:/var/run/docker.sock \
alisaqaq/mcsmanager-daemon:latest
使用 Docker Compose
version: "3"
services:
mcsm-daemon:
image: alisaqaq/mcsmanager-daemon:latest
container_name: mcsm-daemon
ports:
- "24444:24444"
volumes:
- /path/to/data:/data/mcsmanager/daemon/data
- /var/run/docker.sock:/var/run/docker.sock
restart: unless-stopped
Daemon 不建议在 Kubernetes 中使用
使用 Config Map 存储自定义的配置文件,如果不需要对配置文件进行自定义,可以不创建该资源。
请注意,配置文件是在 InitContainer 中复制进入 Volume 中的,因此在每一次启动中,都会覆盖掉 Volume 中的配置文件
kind: ConfigMap
apiVersion: v1
metadata:
name: mcsm-web-config
namespace: mcsm
data:
config.json: |
{
"httpPort": 23333,
"httpIp": null,
"dataPort": 23334,
"forwardType": 1,
"crossDomain": false,
"gzip": false,
"maxCompress": 1,
"maxDonwload": 10,
"zipType": 1,
"loginCheckIp": true,
"loginInfo": "",
"canFileManager": true,
"language": "zh_cn"
}
使用 PersistentVolumeClaim 存储 MCSManager 的数据,你可以使用 HostPath 或其他的方式来实现。
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mcsm-web-pvc
namespace: mcsm
labels:
app: mcsm-web-pvc
spec:
storageClassName: nfs-1
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 2Gi
创建 Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
name: mcsm-web
namespace: mcsm
labels:
app: mcsm-web
spec:
selector:
matchLabels:
app: mcsm-web
replicas: 1
template:
metadata:
labels:
app: mcsm-web
spec:
# 如果没有自定义配置文件,不需要下面的 InitContainer
initContainers:
- name: configuration
image: busybox:1.28
volumeMounts:
- mountPath: /data
name: data
- mountPath: /custom-config
name: custom-config
command:
[
"sh",
"-c",
"mkdir -p /data/SystemConfig && cp -f /custom-config/config.json /data/SystemConfig/config.json",
]
containers:
- name: mcsm-web
image: docker.io/alisaqaq/mcsmanager-web:latest
resources:
requests:
cpu: 100m
memory: 100Mi
limits:
cpu: 200m
memory: 200Mi
ports:
- containerPort: 23333
name: mcsm-web
volumeMounts:
- name: data
mountPath: /data/mcsmanager/web/data
volumes:
- name: data
persistentVolumeClaim:
claimName: mcsm-web-pvc
# 如果没有自定义配置文件,不需要下面的 Volome
- name: custom-config
configMap:
name: mcsm-web-config
items:
- key: config.json
path: config.json
restartPolicy: Always
创建 Service,你可以选择使用其他的方式来暴露服务,此处示例使用 ClusterIP 配合 Ingress 的方式
apiVersion: v1
kind: Service
metadata:
name: mcsm-web
namespace: mcsm
spec:
selector:
app: mcsm-web
type: ClusterIP
ports:
- name: mcsm-web
protocol: TCP
port: 80
targetPort: 23333
创建 Ingress 暴露服务
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: mcsm-web-ingress
namespace: mcsm
annotations:
# 如果使用其他的 Ingress Controller,需要修改此处
# 或者增加其他自定义的 Annotation
traefik.ingress.kubernetes.io/router.entrypoints: websecure
traefik.ingress.kubernetes.io/router.tls: "true"
spec:
# 如果使用其他的 Ingress Controller,需要修改此处
ingressClassName: "traefik"
tls:
- hosts:
- mcsm.example.com
secretName: mcsm-web-cert # SSL 证书 Secret
rules:
- host: mcsm.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: mcsm-web
port:
number: 80