讨论数量:
定时任务 cronJob
消息队列用 deployment dockerfile 最后写 CMD php artisan queue:work
分布式事务了解一下 dtm 框架 github.com/dtm-labs/dtm
想省事就用 xa, 或者自己写,需要了解 tcc,xa,saga 常见分布式事务
分布式事务其实可以不考虑,都开本地事务最简单 k8s 用作弹性伸缩工具就行,不要强行微服务
可以去掉 nginx,server 和 schedule 直接用 laravels 扩展
Dockerfile
FROM eiixy/laravels RUN mkdir -p "/var/www" COPY ./ /var/www/ WORKDIR /var/www RUN /usr/bin/composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ RUN /usr/bin/composer i --no-dev CMD ["php", "/var/www/bin/laravels", "start"]
ConfigMap
apiVersion: v1 kind: ConfigMap metadata: name: php-env namespace: ${NAMESPACE} data: KEY: "${APP_KEY}" # ...
Deployment
apiVersion: apps/v1 kind: Deployment metadata: labels: app: php-example name: php-example namespace: ${NAMESPACE} spec: replicas: 1 selector: matchLabels: app: php-example template: metadata: labels: app: php-example spec: containers: - image: ${IMAGE} imagePullPolicy: IfNotPresent name: server command: ["php", "/var/www/bin/laravels", "start"] envFrom: - configMapRef: name: php-env - image: ${IMAGE} imagePullPolicy: IfNotPresent name: queue command: ["php", "/var/www/artisan", "queue:work"] envFrom: - configMapRef: name: php-env
Service
apiVersion: v1 kind: Service metadata: labels: app: php-example-srv name: php-example-srv namespace: ${NAMESPACE} spec: ports: - name: http port: 80 protocol: TCP targetPort: 5200 selector: app: php-example type: ClusterIP
Ingress
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: ${NAMESPACE} spec: rules: - host: ${HOST} http: paths: - path: / pathType: Prefix backend: service: name: php-example-srv port: number: 80
推荐文章: