
如何将自己的python项目打包成docker镜像
1. 修改代码以读取配置文件
首先,您需要将代码修改为从配置文件读取这些参数。可以使用 .env
文件和 python-dotenv
库来实现。
安装 python-dotenv
在您的环境中安装 python-dotenv
:
pip install python-dotenv
修改代码
更新您的 Flask 应用代码如下:
from dotenv import load_dotenv #导入load_dotenv
import os #导入os
load_dotenv()# 加载环境变量
2. 创建 .env
文件
在项目根目录下创建一个 .env
文件,内容如下(根据实际需要进行修改):
MAC=00:e2:69:6e:bc:53
USERNAME=lixiansen2
PASSWORD=46827913
PORT=8085
修改代码,将env中的配置导入代码中
# 从环境变量获取配置
mac = os.getenv("MAC")
USERNAME = os.getenv("USERNAME")
PASSWORD = os.getenv("PASSWORD")
3. 创建 Dockerfile
在项目根目录下创建一个 Dockerfile
,内容如下:
# 使用 Python 基础镜像
FROM python:3.9-slim
# 设置工作目录
WORKDIR /app
# 复制需求文件并安装依赖
COPY requirements.txt requirements.txt
RUN pip install --no-cache-dir -r requirements.txt
# 复制应用代码
COPY . .
# 暴露端口
EXPOSE 8085
# 设置环境变量
ENV PYTHONUNBUFFERED 1
# 运行应用
CMD ["python", "app.py"]
4. 创建 requirements.txt
在项目根目录下创建一个 requirements.txt
文件,列出所需的库:
Flask
scapy
paramiko
wakeonlan
python-dotenv
5. 构建 Docker 镜像
在项目根目录下运行以下命令以构建 Docker 镜像:
#默认是在项目的目录下执行
docker build -t my_flask_app .
6. 运行 Docker 容器
使用以下命令运行 Docker 容器:
docker run --env-file .env -p 8085:8085 my_flask_app
注意事项
1. 文件命名
应用文件:确保您的 Flask 应用文件(如
app.py
)的名称与Dockerfile
中的CMD
指令一致。如果您的主文件名是app.py
,那么在Dockerfile
中的CMD
应该是:CMD ["python", "app.py"]
Dockerfile:确保您的
Dockerfile
文件名为Dockerfile
(不带扩展名),并放在项目的根目录下。
2. 目录结构
确保您的项目目录结构类似于以下格式:
my_flask_app/
│
├── app.py # Flask 应用代码
├── Dockerfile # Dockerfile
├── requirements.txt # 依赖文件
└── .env # 环境变量文件
3. 其他注意事项
requirements.txt:确保在
requirements.txt
中列出所有必要的依赖项,以便 Docker 可以正确安装它们。.env 文件:确保
.env
文件存在并包含正确的配置。