编辑
2026-03-23
小白笔记
0

目录

准备工作
构建并启动容器

准备工作

dockerfile

FROM python:3.9-slim # ... 其他配置 ... # 强制 Python 不缓存 stdout 和 stderr ENV PYTHONUNBUFFERED=1 CMD ["python", "main.py"]

python服务端

python
import signal import time import yaml import os # 定义全局变量存储配置 config = {} def load_config(): """读取并解析配置文件的函数""" global config try: with open("config.yaml", "r") as f: config = yaml.safe_load(f) print(f"[{time.strftime('%H:%M:%S')}] 配置已加载: {config}") except Exception as e: print(f"加载失败: {e}") def handle_sighup(signum, frame): """SIGHUP 信号处理回调函数""" print(f"\n捕获到信号 {signum} (SIGHUP),执行热更新...") load_config() # 1. 初始化加载 load_config() # 2. 注册信号监听 # 在 Linux 中,SIGHUP 通常用于通知守护进程重新加载配置 signal.signal(signal.SIGHUP, handle_sighup) print(f"当前进程 PID: {os.getpid()}") print("正在运行业务逻辑(每5秒循环一次),请尝试发送信号...\n") try: while True: print(f"当前 [app_name] 是: {config.get('app_name')}") time.sleep(5) except KeyboardInterrupt: print("\n服务已手动停止")

构建并启动容器

bash
# 构建 docker build -t reload-test . # 运行(将宿主机的 config.yaml 挂载进去,实现同步修改) docker run -d --name my-app -v $(pwd)/config.yaml:/app/config.yaml reload-test # 查看实时日志 docker logs -f my-app

本文作者:墨洺的文档

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!