目前项目涉及到的基础设施有mysql, nginx, redis,服务模块有两个 python/fastapi 和 golang/gin。 如果本地部署的话需要配置的环境有点多,虚拟化(以docker容器形式)是目前(最)流行的部署方法。加上众多编排工具可选择,非常适合Frodo目前多服务的形式。本文先介绍项目的docker部署方法,再以此为例,谈谈docker-compose编排多服务应用的特点和需要注意的地方。希望本文对大家开始实践部署多服务的容器编排应用能有启发~
项目地址: python/fastapi + golang/gin + Vue + docker 基于异步技术栈的个人博客系统
Docker部署(推荐)
请确保本地docker及docker-compose可用,以下在docker-compose-1.25.5
, MacOS-Majave 15.15
版本测试通过。
修改配置文件
需要修改的文件为python_web/config/config.ini.model
和goadmin/config.ini.model
,
[global]
debug = True
author = yzk
site_title = Zhikai-Yang Space
host_path = 202.117.47.47:9080 ## 将此配置改为你的环境入口地址,例如本机为localhost
剩余的配置,例如各个服务的端口号,如若出现本地占用的情况,情修改nginx.conf
, docker-compose.yml
相应的地方。
build镜像
git clone https://github.com/LouisYZK/Frodo
cd Frodo
sh build.sh
此过程可能需要等待一定时间,过程中需要完成每层镜像的完整构建,如若出现某层因连接超时错误,请检查网络情况或重试。
启动
docker-compose up ## 启动
该命令正常会启动5个server, 当5个server均正常运行才可正常使用,可使用命令docker-compose ps
查看是否正常启动,如果存在退出Exited
状态的容器,请仔细查看输出的日志和退出的原因。你也可以使用docker ps -a
查看启动或退出的容器,使用docker logs <container_id>
查看日志。
使用
启动后,请先创建一个管理员用户:
docker exec -it $(docker ps | grep frodo/pyweb | awk '{print $1}') python manager.py adduser
随后根据提示输入账密即可看到创建成功的提示。
接下来请访问<host_ip>:<nginx_server_port>/admin
, 例如本机环境访问localhost:9080/admin
, 用你刚才创建的账密登录,即可进入后台。
进入后台请按照UI提示创建几篇文章(post), 而后访问前台localhost:9080
观察是否生效。
用户侧边栏个性化配置在python_web/config.yaml
不必重启docker-compose
即可生效。
环境测试
理论上docker与部署环境无依赖关系。目前已经测试的环境有:
- Ubuntu LTS 16.06
- MacOS Majave 15
- Windows …
- Rowsberry ARM …
欢迎大家部署测试~
虚拟化思路
容器虚拟化编排需要考虑的问题很多,大家可以参考《Kubernetes in Action》这本书看看最主流的kubernetes
是如何流程化讲述容器编排问题的。需要考虑的基本上 配置, 网络(通信), 存储是主要方面。而本次使用docker-compose
进行编排的也是主要解决这三部分的问题。
容器: 是指使用了linux-namespace, cg