基于 Docker / Kubernetes 部署 Draw.io 有以下几种常见方式,你可以根据实际需求选择最适用的方案。
✅ 一、快速启动(无持久化,适合临时使用)
docker run -it --rm --name=draw \
-p 8080:8080 -p 8443:8443 \
jgraph/drawio
- 访问地址:http://localhost:8080
- 说明:容器退出后会自动删除,适合临时测试。
✅ 二、长期运行(推荐,带重启策略)
docker run -d --name=draw \
--restart=always \
-p 8080:8080 -p 8443:8443 \
jgraph/drawio
- 使用
-d
后台运行,--restart=always
保证服务持续可用。
✅ 三、使用 Docker Compose(便于管理)
创建 docker-compose.yml
文件:
version: '3'
services:
draw:
image: jgraph/drawio
container_name: draw
restart: always
ports:
- "8080:8080"
- "8443:8443"
environment:
TZ: Asia/Shanghai
启动服务:
docker-compose up -d
- 优点:结构清晰,便于后续扩展(如挂载存储、配置 Nginx 等)。
✅ 四、基于 kubernetes 部署
yaml 仅供参考
apiVersion: apps/v1
kind: Deployment
metadata:
name: drawio
namespace: tools
spec:
selector:
matchLabels:
app: drawio
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 20
maxUnavailable: 20
replicas: 1
template:
metadata:
labels:
app: drawio
spec:
nodeSelector:
worker: worker1
containers:
- name: drawio
image: ccr.ccs.tencentyun.com/jansora/drawio:28.2.0
imagePullPolicy: IfNotPresent
ports:
- containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:
name: drawio
namespace: tools
spec:
selector:
app: drawio
ports:
- protocol: TCP
port: 8080
targetPort: 8080
name: http
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: drawio-ingress
namespace: tools
annotations:
nginx.ingress.kubernetes.io/force-ssl-redirect: "true" # 3030 -> 443 http 强制跳转 https
nginx.ingress.kubernetes.io/hsts: "false"
spec:
ingressClassName: nginx
tls:
- secretName: wildcard.jansora.com
rules:
- host: draw.jansora.com
http:
paths:
- backend:
service:
name: drawio
port:
number: 8080
pathType: Prefix
path: /