Translate Shell容器编排:Docker Swarm与Kubernetes配置
Translate Shell(命令行翻译工具)支持通过Docker快速部署,但官方未提供容器编排方案。本文基于项目现有Dockerfile,提供Docker Swarm与Kubernetes环境下的高可用部署配置,解决多实例负载均衡、服务发现与健康检查问题。
容器化基础:Dockerfile解析
项目根目录下的Dockerfile定义了基础运行环境,采用Alpine Linux最小镜像,安装了bash、gawk等依赖,并通过wget获取trans可执行文件。关键配置如下:
FROM alpine:latest
RUN apk add bash gawk curl mplayer fribidi less hunspell wget \
&& wget git.io/trans \
&& chmod +x ./trans \
&& mv ./trans /usr/local/bin/
ENTRYPOINT ["trans"]
CMD ["--help"]
该配置构建的镜像默认启动翻译工具帮助页面,实际使用需通过docker run -it soimort/translate-shell -shell进入交互模式(README.md#111)。
Docker Swarm部署方案
1. 服务栈配置文件
创建docker-compose.yml定义服务:
version: '3.8'
services:
translate-api:
image: soimort/translate-shell
command: -brief :en
deploy:
replicas: 3
resources:
limits:
cpus: '0.5'
memory: 128M
restart_policy:
condition: on-failure
healthcheck:
test: ["CMD", "trans", "-V"]
interval: 30s
timeout: 10s
retries: 3
ports:
- "8080:8080"
2. 部署命令与扩展
# 初始化Swarm集群
docker swarm init
# 部署服务栈
docker stack deploy -c docker-compose.yml translate-stack
# 查看服务状态
docker service ls | grep translate-api
# 动态扩展实例数
docker service scale translate-stack_translate-api=5
Kubernetes部署方案
1. Deployment配置
创建k8s/deployment.yaml:
apiVersion: apps/v1
kind: Deployment
metadata:
name: translate-shell
spec:
replicas: 3
selector:
matchLabels:
app: translator
template:
metadata:
labels:
app: translator
spec:
containers:
- name: trans-api
image: soimort/translate-shell
command: ["/bin/sh", "-c", "while true; do trans -brief :en '健康检查'; sleep 30; done"]
resources:
limits:
cpu: "500m"
memory: "128Mi"
livenessProbe:
exec:
command: ["trans", "-V"]
initialDelaySeconds: 10
periodSeconds: 30
2. 服务暴露与负载均衡
创建k8s/service.yaml:
apiVersion: v1
kind: Service
metadata:
name: translate-service
spec:
selector:
app: translator
ports:
- port: 80
targetPort: 8080
type: LoadBalancer
通过kubectl apply -f k8s/部署后,可通过kubectl get pods查看运行实例:
NAME READY STATUS RESTARTS AGE
translate-shell-7f9d658c9-2x4kf 1/1 Running 0 5m
translate-shell-7f9d658c9-5b7m2 1/1 Running 0 5m
translate-shell-7f9d658c9-9z6tq 1/1 Running 0 5m
多引擎翻译配置
Translate Shell支持Google、Bing等多引擎(include/Translators/),可通过环境变量动态切换。在Kubernetes中配置ConfigMap:
apiVersion: v1
kind: ConfigMap
metadata:
name: translate-config
data:
ENGINE: "bing"
SOURCE_LANG: "auto"
TARGET_LANG: "zh-CN"
在Deployment中引用:
env:
- name: TRANSLATE_ENGINE
valueFrom:
configMapKeyRef:
name: translate-config
key: ENGINE
监控与日志
Prometheus监控
添加Prometheus监控注解:
annotations:
prometheus.io/scrape: "true"
prometheus.io/port: "8080"
日志收集
配置容器日志驱动:
spec:
containers:
- name: trans-api
image: soimort/translate-shell
args: ["-brief", ":en"]
resources:
limits:
cpu: "500m"
memory: "128Mi"
volumeMounts:
- name: logs
mountPath: /var/log/translate
volumes:
- name: logs
persistentVolumeClaim:
claimName: translate-logs
部署对比与最佳实践
| 特性 | Docker Swarm | Kubernetes |
|---|---|---|
| 复杂度 | 简单 | 中等 |
| 自动扩缩容 | 需第三方工具 | 原生支持 |
| 滚动更新 | 支持 | 支持 |
| 服务网格 | 无 | Istio集成 |
| 适用场景 | 中小团队 | 企业级部署 |
建议根据团队规模选择方案:个人或小团队优先使用Docker Swarm快速部署;有高可用与自动扩缩需求的场景选择Kubernetes。
扩展阅读
- 官方Docker使用指南:README.md#103-112
- 翻译引擎实现:include/TranslatorInterface.awk
- Kubernetes健康检查文档:man/trans.1.md
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



