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

python(44) : docker compose基于基础镜像部署python服务

1.前言


docker compose基于python镜像启动容器, 支持多实例

2.环境信息


系统: Alibaba Cloud Linux release 3 (OpenAnolis Edition)

架构: x86_64

docker版本: Docker version 26.1.3, build b72abbb

3.构建基础镜像

3.1.Dockerfile

# 使用Python 3.11官方镜像作为基础镜像
FROM python:3.10-slimWORKDIR /app# 复制requirements.txt文件
COPY requirements.txt .# 更新pip
RUN python -m pip install --upgrade pip  -i https://mirrors.aliyun.com/pypi/simple/ requests# 根据requirements.txt文件安装依赖
RUN pip install --no-cache-dir -r requirements.txt  -i https://mirrors.aliyun.com/pypi/simple/ requests# 安装其他依赖(可选)
#RUN pip install --upgrade Flask -i https://mirrors.aliyun.com/pypi/simple/ requests# 设置时区
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone# 创建日志目录
RUN mkdir -p /app/logs

3.2.build.sh

# 删除名为 py_base:0.1 的本地 Docker 镜像(如果存在)
docker rmi py_base:0.1# 使用当前目录下的 Dockerfile 构建新的 py_base:0.1 镜像
docker build -t py_base:0.1 .  --no-cache

4.基于基础镜像启动容器运行python

4.1.Dockerfile

FROM python:3.10-slim# 设置工作目录
WORKDIR /app# 设置环境变量
ENV PYTHONPATH=/app
ENV PYTHONUNBUFFERED=1# 复制应用代码(从项目根目录复制)
COPY . .# 防止.env.prod不存在报错
RUN touch /app/.env.prod 
# 删除原有.env文件(如果存在),并将.env.prod重命名为.env
RUN rm -f /app/.env && \if [ -f /app/.env.prod ]; then mv /app/.env.prod /app/.env; fi# 更新pip
RUN python -m pip install --upgrade pip  -i https://mirrors.aliyun.com/pypi/simple/ requests# 安装其他依赖(可选)
#RUN pip install --upgrade Flask -i https://mirrors.aliyun.com/pypi/simple/ requests# 创建日志目录
RUN mkdir -p /app/logs# 设置非root用户
RUN useradd --create-home --shell /bin/bash app && \chown -R app:app /app
USER app# 暴露端口(如果需要的话)
#EXPOSE 8888# 启动命令
CMD ["python", "main.py"]

4.2.docker-compose.yml和deploy.sh参考如下文档

参考: python(43) : docker compose部署python服务-CSDN博客

http://www.dtcms.com/a/409830.html

相关文章:

  • VMware+RockyLinux+ikuai+docker+cri-docker+k8s+calico BGP网络 自用 实践笔记(四)
  • 深入理解 Docker:从入门到实践
  • 实战排查:Java 解析 Excel 大型 导致内存溢出问题的完整解决过程
  • 【实录】使用 Verdaccio 从零搭建私有 npm 仓库(含完整步骤及避坑指南)
  • 物联网人体红外检测系统详解
  • 关于Unix Domain Socket的使用入门
  • 机器视觉系统中工业相机的常见类型及其特点、应用
  • RTT操作系统(4)
  • 基于卷积神经网络的 CIFAR-10 图像分类实验报告
  • 微服务项目->在线oj系统(Java-Spring)----[前端]
  • 做网站撘框架小米手机如何做游戏视频网站
  • 如何建自己网站做淘宝客黄骅港吧
  • 交叉口内CAV调度:轨迹优化与目标速度规划,助力智能交通无缝运行!
  • Navicat 技术指引 | KingbaseES 专用 AI 助手
  • 如何优化Android app耗电量
  • 面试复习题---Flutter 资深专家
  • 在 C# 中将邮件转换为 PDF | MSG 转 PDF | EML 转 PDF
  • 【LangChain4j+Redis】会话记忆功能实现
  • Android Handler的runWithScissors方法
  • 180课时吃透Go语言游戏后端开发3:Go语言中其他常用的数据类型
  • 在 Android 11 上实现 WiFi 热点并发支持(同时开启 STA + AP 模式)
  • 济南高新区网站建设wordpress举报插件
  • html 占位符
  • GPT-5 Codex正式上线 Azure AI Foundry(国际版)
  • C++设计模式之结构型模式:享元模式(Flyweight)
  • STM32 智能垃圾桶项目笔记(一):超声波模块(HC-SR04)原理与驱动实现
  • 全文 -- Vortex: Extending the RISC-V ISA for GPGPU and 3D-Graphics Research
  • 设计网站推荐理由公司网站备案电话
  • 事件驱动与CDS:基于FHIR R5 Subscriptions与Bulk Data的再考察(下)
  • Tigshop开源商城系统 Java v5.2.2 / PHP v5.1.6版本正式发布(ES搜索上新)