制作python的Dockerfile
这个 Dockerfile 将定义如何构建一个包含应用程序及其所有依赖项的 Docker 镜像。此外,我们将使用环境变量来配置应用程序,以避免在代码中硬编码敏感信息。
首先,确保你的环境中已经安装了 Docker。
接下来,按照以下步骤创建 Dockerfile 和相关文件:
步骤 1: 创建 Dockerfile
在项目的根目录下创建一个名为 Dockerfile 的文件,内容如下:
# 使用官方 Python 基础镜像
FROM python:3.9-slim
# 设置工作目录
WORKDIR /app
# 复制项目文件到容器中
COPY . /app
# 安装设置清华源并依赖包
RUN pip install --no-cache-dir --index-url https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt
# 设置环境变量
ENV DB_HOST=db_host \
DB_PORT=3306 \
DB_DATABASE=mydatabase \
DB_USER=myuser \
DB_PASSWORD=mypassword \
# 暴露端口
EXPOSE ${SERVER_PORT}
# 启动应用test.py
CMD ["python", "test.py"]
步骤 2: 创建 requirements.txt 文件
在项目的根目录下创建一个名为 requirements.txt 的文件,列出所有必要的 Python 包。例如:
Flask
pywinrm
mysql-connector-python
flask-cors
requests
python-keystoneclient
Werkzeug==2.2.2
python-dotenv
步骤 3: 创建环境变量文件
3.1在项目的根目录下创建一个名为 .env 的文件,内容如下:
DB_HOST=db_host
DB_PORT=3306
DB_DATABASE=mydatabase
DB_USER=myuser
DB_PASSWORD=mypassword
请根据实际情况修改这些值。
3.2 在python程序中配置文件 config.py 中,使用 os.environ.get 方法来读取环境变量。如果环境变量不存在,可以提供一个默认值。
import os
# config.py
VERSION = os.environ.get('VERSION', 'v1.0.0')
DB_HOST = os.environ.get('DB_HOST', '127.0.0.1')
DB_PORT = os.environ.get('DB_PORT', '3306')
DB_DATABASE = os.environ.get('DB_DATABASE', 'test_db')
DB_USER = os.environ.get('DB_USER', 'root')
DB_PASSWORD = os.environ.get('DB_PASSWORD', '123456')
3.3 确保在 rdbackend.py 文件中加载 .env 文件。你可以使用 python-dotenv 库来加载环境变量。
from flask import Flask, request, jsonify
from dotenv import load_dotenv
import os
# 加载 .env 文件
load_dotenv()
app = Flask(__name__)
@app.route('/')
def hello():
return "Hello, World!"
if __name__ == '__main__':
app.run(host='0.0.0.0', port=int(os.getenv('SERVER_PORT', 8028)))
步骤 4: 构建 Docker 镜像
在命令行中,导航到包含 Dockerfile 的目录,然后运行以下命令来构建 Docker 镜像:
docker build -t my-rd-backend .
步骤 5: 运行 Docker 容器
构建完成后,你可以使用以下命令来运行容器:
docker run -d -p 5001:5000 --env-file .env my-rdbackend
这里,-p 5001:5000 参数映射了主机的 5001 端口到容器的 5000 端口,–env-file .env 参数指定了一个环境变量文件,该文件包含了所有需要传递给容器的环境变量值。