当前位置: 首页 > article >正文

制作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 参数指定了一个环境变量文件,该文件包含了所有需要传递给容器的环境变量值。


http://www.kler.cn/a/387879.html

相关文章:

  • 【JavaEE进阶】导读
  • 回归分析学习
  • 介绍几个提取视频文案的Coze插件
  • 关于element-plus中el-table组件宽度一直连续不断增加的问题
  • 网络安全:挑战、策略与未来趋势
  • Python中4个高效小技巧
  • 梧桐数据库之以识别优质的移动服务套餐为例讲解SQL实现分享
  • Shell扩展
  • vite+vue3项目兼容低版本浏览器
  • 定位,堆叠,CSS精灵,过渡,光标(前端)
  • 软考高级架构 - 8.2 - 系统架构评估 - 超详细讲解+精简总结
  • Linux系统编译boot后发现编译时间与Windows系统不一致的解决方案
  • nginx配置文件介绍及示例
  • 深度学习——多层感知机MLP(一、多层感知机介绍)
  • 设计模式-行为型-常用-2:职责链模式、状态模式、迭代器模式
  • 【安装配置教程】二、VMware安装并配置ubuntu22.04
  • jmeter常用配置元件介绍总结之取样器
  • CDH大数据平台部署
  • 高防服务器和高防IP的区别是什么?
  • Vue2中使用firefox的pdfjs进行文件文件流预览
  • vue.js组件和传值以及微信小程序组件和传值
  • WordPress文章自动提交Bing搜索引擎:PHP推送脚本教程
  • Visual Studio高版本到低版本的转换
  • Spring Boot 监视器
  • EMNLP 2024 BoF 活动报名:用 Embeddings、Reranker、小型语言模型打造更优搜索!
  • 超萌!HTMLCSS:打造趣味动画卡通 dog