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-slim

WORKDIR /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 py_base:0.1
 
# 设置工作目录
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服务-优快云博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值