python项目结构
pythondocker/
│
├── README.md # 项目说明文件
├── setup.py # 用于安装项目的Python脚本
├── requirements.txt # 项目依赖列表
├── .gitignore # Git 忽略文件配置
├── .env # 环境变量配置文件
├── Dockerfile
│
├── pythondocker/ # 主项目包
│ ├── __init__.py # 包初始化文件
│ ├── main.py # 主执行文件或程序入口点
│ ├── module1.py # 项目模块1
│ ├── module2.py # 项目模块2
│ └── ... # 其他模块或包
│
├── tests/ # 测试代码
│ ├── __init__.py # 测试包初始化文件
│ ├── test_module1.py# 模块1的测试
│ ├── test_module2.py# 模块2的测试代码
│ └── ... # 其他测试文件
│
├── docs/ # 项目文档
│ ├── index.md # 文档主页面
│ └── ... # 其他文档文件
│
├── data/ # 项目数据文件
│ ├── raw/ # 原始数据
│ ├── processed/ # 处理后的数据
│ └── ...
│
├── scripts/ # 项目脚本
│ ├── deploy.sh # 部署脚本
│ └── ... # 其他脚本
│
└── .git/ # Git版本控制目录(隐藏目录)
requirements.txt
Flask==3.0.3
随便加一个试试能不能下载依赖包
Dockerfile
# 使用官方 Python 运行时作为父镜像
FROM python:3.9.0a1# 设置工作目录
WORKDIR /app# 复制当前目录下的所有文件到工作目录
COPY . /app# 安装 requirements.txt 中的 Python 依赖
RUN pip install --no-cache-dir -r requirements.txt# 暴露容器的 5000 端口
EXPOSE 5000# 运行 main.py
CMD ["python", "./pythondocker/main.py"]
main.py
import time
import logginglogging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s')def main():# 打印不同级别的日志logging.debug("这是一条debug信息")logging.info("这是一条info信息")logging.warning("这是一条warning信息")logging.error("这是一条error信息")logging.critical("这是一条critical信息")while True:logging.debug("这个脚本会持续运行,直到你停止它。")time.sleep(5) # 暂停5秒钟if __name__ == "__main__":main()
打包和运行
docker build -t python_docker .
docker run -p 5000:5000 --name python_docker python_docker