Bagisto容器化部署:Docker和Kubernetes生产环境配置终极指南
Bagisto是一个基于Laravel框架构建的免费开源电子商务平台,为企业提供完整的在线商店解决方案。本文将详细介绍如何使用Docker和Kubernetes为Bagisto电商平台配置生产级容器化部署环境,实现高可用性和弹性扩展。
🚀 Docker容器化部署配置
Bagisto项目已经内置了Laravel Sail支持,提供了完整的Docker Compose配置。通过docker-compose.yml文件,您可以一键部署完整的开发环境。
核心服务容器配置
Bagisto的Docker Compose配置包含以下关键服务:
- Laravel应用容器:基于PHP 8.3的Web应用服务器
- MySQL数据库:版本8.0,支持事务和复制
- Redis缓存:高性能内存数据存储
- Elasticsearch:全文搜索引擎服务
- Kibana:Elasticsearch可视化界面
- Mailpit:邮件测试和调试工具
环境变量配置
创建.env文件配置关键环境参数:
APP_NAME=Bagisto
APP_ENV=production
APP_KEY=base64:your_secure_key_here
APP_DEBUG=false
APP_URL=https://your-domain.com
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=bagisto
DB_USERNAME=bagisto_user
DB_PASSWORD=secure_password
REDIS_HOST=redis
REDIS_PASSWORD=null
REDIS_PORT=6379
📦 Kubernetes生产环境部署
对于生产环境,建议使用Kubernetes进行容器编排管理。
Deployment配置示例
创建Bagisto应用部署配置文件:
apiVersion: apps/v1
kind: Deployment
metadata:
name: bagisto-app
labels:
app: bagisto
spec:
replicas: 3
selector:
matchLabels:
app: bagisto
template:
metadata:
labels:
app: bagisto
spec:
containers:
- name: bagisto
image: your-registry/bagisto:latest
ports:
- containerPort: 80
envFrom:
- configMapRef:
name: bagisto-config
resources:
requests:
memory: "256Mi"
cpu: "250m"
limits:
memory: "512Mi"
cpu: "500m"
livenessProbe:
httpGet:
path: /health
port: 80
initialDelaySeconds: 30
periodSeconds: 10
Service和Ingress配置
配置负载均衡和外部访问:
apiVersion: v1
kind: Service
metadata:
name: bagisto-service
spec:
selector:
app: bagisto
ports:
- protocol: TCP
port: 80
targetPort: 80
type: LoadBalancer
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: bagisto-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: your-domain.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: bagisto-service
port:
number: 80
🔧 持久化存储配置
MySQL数据持久化
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mysql-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 20Gi
Redis数据持久化
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: redis-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
🛡️ 安全配置最佳实践
网络策略
配置网络隔离策略,限制不必要的网络访问:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: bagisto-network-policy
spec:
podSelector:
matchLabels:
app: bagisto
policyTypes:
- Ingress
- Egress
ingress:
- from:
- podSelector:
matchLabels:
app: bagisto
ports:
- protocol: TCP
port: 80
TLS证书配置
使用Cert-Manager自动管理SSL证书:
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: bagisto-tls
spec:
secretName: bagisto-tls-secret
issuerRef:
name: letsencrypt-prod
kind: ClusterIssuer
commonName: your-domain.com
dnsNames:
- your-domain.com
- www.your-domain.com
📊 监控和日志管理
Prometheus监控配置
集成监控指标收集:
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: bagisto-monitor
labels:
release: prometheus
spec:
selector:
matchLabels:
app: bagisto
endpoints:
- port: web
interval: 30s
path: /metrics
日志收集配置
使用Fluentd进行日志收集:
apiVersion: v1
kind: ConfigMap
metadata:
name: fluentd-config
data:
fluent.conf: |
<source>
@type tail
path /var/log/containers/*bagisto*.log
pos_file /var/log/fluentd-bagisto.log.pos
tag kubernetes.*
format json
time_key time
time_format %Y-%m-%dT%H:%M:%S.%NZ
</source>
🚀 自动化部署流水线
GitHub Actions部署配置
创建自动化CI/CD流水线:
name: Deploy Bagisto to Kubernetes
on:
push:
branches: [ main ]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Set up Kubectl
uses: azure/setup-kubectl@v3
with:
version: 'v1.24.0'
- name: Deploy to Kubernetes
run: |
kubectl apply -f k8s/
env:
KUBE_CONFIG_DATA: ${{ secrets.KUBE_CONFIG_DATA }}
💡 性能优化建议
资源限制配置
根据流量预估合理配置资源:
resources:
requests:
memory: "512Mi"
cpu: "500m"
limits:
memory: "1Gi"
cpu: "1000m"
水平自动扩缩容
配置HPA实现自动扩缩容:
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: bagisto-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: bagisto-app
minReplicas: 2
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 70
通过以上完整的Docker和Kubernetes配置,您的Bagisto电商平台将获得企业级的容器化部署能力,具备高可用性、弹性扩展和自动化运维特性。记得定期更新容器镜像和安全策略,确保生产环境的安全稳定运行。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



