Python服务Dokcer化并k8s部署实例

Python服务Docker化与K8S部署实践

这篇文章记录了我试验将一个基于python的服务docker化并k8s部署的过程。

  1. 服务介绍
  2. Docker化
    1. 设计
    2. 业务代码改造
    3. 创建docker镜像
  3. K8S部署
    1. 设计
    2. yaml文件
    3. 运行

服务介绍

这是一个用 python 实现的程序,tornado 作为 web 服务器,mongodb 作为存储,redis 作为缓存。

Docker化

设计
  1. 为了方便,使用docker hub作为镜像仓库,而不是自己搭建私有库。
  2. 业务代码直接打包进docker image,如果修改业务代码,需要重新生成docker image。
业务代码改造

将配置文件中之前涉及到的 mongo 和 redis 的配置改为服务名称。

改造前:

{
   
   
	"mongodb": {
   
   
		"host":"127.0.0.1",
		"port":"27017"
	},
	"redis": {
   
   
		"host":"127.0.0.1",
		"port":"6379"
	}
}

改造后:

{
   
   
	"mongodb": {
   
   
		"host":"nebulae-redis-mongo",  # 服务名称
		"port":"27017"
	},
	"redis": {
   
   
		"host":"nebulae-redis-mongo",
		"port":"6379"
	}
}
  1. nebulae-redis-mongo 为一个服务的名称,下面讲 k8s 设计时会说到。
创建docker镜像
一、目录结构
nebulae
     |
     --- Dockerfile
     |
     --- code  # 业务逻辑代码
            |
            --- nebulae 
二、Dockerfile
FROM python:3.6   # 基础镜像

COPY ./code/nebulae /code/nebulae  # 将代码copy进容器

WORKDIR /code/nebulae/services 

RUN pip install -r requirements.txt  # 安装程序依赖

EXPOSE 10001   # 容器对外暴露的端口

CMD ["python","nebulae_server.py"]   # 容器执行的命令,起动python程序
创建镜像命令
  1. 在 nebulae 目录下运行下面命令,创建镜像
docker build -t test/nebulae:tag
  1. 将镜像推至 docker hub
docker push test/nebulae:tag

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值