概述

传统的一些服务器程序,通常是通过读配置文件的方式来读入参数,  如果要把程序容器化,通过配置文件读参就存在不方便的情况。现在以debian-python27为基础镜像, 以一个脚本程序为例来进行程序容器化改造! 改造前后的目录结构如下所示:

linux:/app # tree
.
├── original               # 初始代码目录, 模拟老的服务器程序, 日志文件位于log/server.log
│   ├── server             # 服务端, 通过Dockerfile打包的镜像名称: original/server:v0.1
│   │   ├── Dockerfile     # server程序打包Dockerfile
│   │   ├── config.py      # 读取配置文件的辅助模块
│   │   ├── ini
│   │   │   └── config.ini # 配置文件
│   │   └── server.py      # 监听并回送客户端发送的字符串! 需从ini/config.ini读取监听端口
│   └── worker             # 客户端, 日志文件位于log/worker.log, 对应镜像: original/worker:v0.1
│       ├── Dockerfile
│       ├── config.py      # 读取配置文件的辅助模块, 和server/config.py相同
│       ├── ini
│       │   └── config.ini # 配置文件, 包含连接ip,port等
│       └── worker.py      # 客户端程序, 读取ini/config.ini连接到server, 发送"hello, docker!"给server
└── update                 # 经过改造的程序目录, 删除了读取配置文件, 其它文件和original目录下一致
    ├── server             # 改造后对应镜像: update/server:v0.1
    │   ├── Dockerfile
    │   └── server.py
    └── worker             # 改造后对应镜像: update/worker:v0.1
        ├── Dockerfile
        └── worker.py

8 directories, 12 files
linux:/app #

 

 初始程序代码如下:

 1 #!/usr/bin/python
 2 # -*- coding: utf-8 -*-
 3 
 4 import os
 5 import sys
 6 import ConfigParser
 7 
 8 class Config:
 9   def __init__(self, ini_path):
10     self.config_ = ConfigParser.ConfigParser()
11     self.config_.read(ini_path)
12 
13   def get_string(self, section, key, default_string_value):
14     try:
15       return self.config_.get(section, key)
16     except Exception, e:
17       return default_string_value
18 
19   def get_int(self, section, key, default_int_value):
20     try:
21       return int(self.config_.get(section, key))
22     except Exception, e:
23       return default_int_value
/app/original/[server|worker]/config.py

相关文章:

  • 2021-09-25
  • 2022-03-02
  • 2022-12-23
  • 2021-10-19
  • 2021-06-28
  • 2021-10-17
  • 2021-04-08
  • 2021-08-09
猜你喜欢
  • 2022-02-13
  • 2021-08-03
  • 2018-11-30
  • 2021-10-10
  • 2022-12-23
  • 1970-01-01
相关资源
相似解决方案