阿里云容器服务体验: 部署 ShellPays 条码支付整合服务平台 -- (三)容器编排分解
请先参考
容器编排规划
数据库服务容器 mysqld
通过自定义 MySQL 镜像创建,为业务数据存储提供服务
...
mysqld:
image: registry.aliyuncs.com/aves/pitta.mysqld
volumes:
- lv_mysql:/var/lib/mysql
expose:
- "3306"
...
容器将使用 lv_mysql 命名数据卷,backend 使用容器别名 aves.dc.mysql 通过 3306 此容器
Key-Value 类型存储服务容器 redisd
通过官方 Redis 镜像创建,为高频访问业务数据或临时业务数据提供存储
...
redisd:
image: redis
command: redis-server --appendonly yes
volumes:
- lv_redis:/data
expose:
- "6379"
...
容器将使用 lv_redis 命名数据卷,backend 使用容器别名 aves.dc.redis 通过 6379 此容器
OSGi 运行容器 backend
通过自定义 Kestrel 镜像创建,提供业务处理服务
backend:
image: registry.aliyuncs.com/aves/pitta.backend.mysql:latest
volumes:
- lv_filestore:/var/aves
- lv_mvn:/var/mvn
links:
- mysqld:aves.dc.mysql
- redisd:aves.dc.redis
environment:
- MYSQL_HOST=aves.dc.mysql
- MYSQL_USER=root
- MYSQL_PASSWORD=pass4pass
- MYSQL_DB_NAME=pitta
- PITTA_WXPAY_SPBIP=127.0.0.1
- PITTA_CALLBACK_HOST=127.0.0.1
- PITTA_ABAPAY_SRVURL=http://localhost/sei/v10/svc
expose:
- "8181"
- "8101"
ports:
- "9669:9669"
容器将使用 lv_filestore 和 lv_mvn 命名数据卷, 容器分别通过容器别名aves.dc.mysql访问mysqld,别名aves.dc.redis访问redisd。8181, 8101 端口用于容器内部连接。9669 用于外部机具网络连接。(端口可根据实际环境调整)
HTTP Server 服务容器 frontend
通过自定义 Nginx 镜像创建,为用户提供 web 操作界面
frontend:
image: registry.aliyuncs.com/aves/pitta.frontend:latest
volumes:
- lv_filestore:/var/aves
links:
- backend:dc.pitta.backend
environment:
- PITTA_SERVER_NAME=127.0.0.1
ports:
- "443:443"
- "80:80"
容器将使用 lv_filestore 命名数据卷, 容器通过容器别名dc.pitta.backend访问backend。443,80 用于用户浏览器访问 web 操作界面。
数据卷容器需求
容器共享文件数据卷 lv_filestore
MySQL 数据卷 lv_mysql
Redis 数据卷 lv_redis
Maven local Repositry数据卷 lv_mvn
网络需求
由 docker-compose 运行编排文件时自动创建命名为 <project>_default bridge 自定义网络,