【Docker】本地项目打包并发布到线上

部署python到docker 再把docker部署到服务器上

部署 Python 项目到 Docker 并将 Docker 容器部署到服务器通常需要执行以下步骤:

  1. 准备 Dockerfile: 在项目根目录创建一个名为 Dockerfile 的文件,该文件包含构建 Docker 镜像的指令。
csharp 复制代码
# 设置基础镜像
FROM python:3.8

# 设置工作目录
WORKDIR /app

# 复制项目文件到工作目录
COPY . /app

# 安装项目依赖
RUN pip install -r requirements.txt

# 暴露应用端口
EXPOSE 5000

# 启动应用
CMD ["python", "app.py"]

项目生产requirements.txt的命令如下

csharp 复制代码
pip freeze > requirements.txt

如果 requirements.txt 文件中包含类似 @ file:///Users/ktietz/demo/mc3/conda-bld/wtforms_1629354749392/work 的地址,通常表示该依赖项是从本地文件系统安装的。这可能是因为在项目中使用了本地修改过的包,或者是在开发过程中使用了本地的包进行测试。

这样的地址是 pip 安装时的一种来源格式,用于指定从本地文件系统或其他来源安装包。在正常的发布或分享代码时,你可能会希望移除这些本地文件系统的依赖项。

你可以手动编辑 requirements.txt 文件,删除包含类似 @ file:///... 的行,然后使用其他远程仓库或 PyPI 上的版本。在编辑文件后,你可以使用以下命令来重新安装依赖项:

我项目中的Dockerfile如下:

csharp 复制代码
FROM python:3.10.13
WORKDIR /app
COPY . /app
# RUN pip install -r requirements.txt  -i https://pypi.douban.com/simple
# 使用国内镜像
RUN pip install -r requirements.txt -i https://pypi.douban.com/simple
# 下面是为了安装 opencv的依赖
RUN apt-get update
RUN apt-get install ffmpeg libsm6 libxext6  -y

EXPOSE 5100
CMD ["python", "run.py"]
csharp 复制代码
pip install -r requirements.txt

确保在编辑文件之前备份 requirements.txt,以免不小心删除了某些必要的依赖项。

  1. 构建 Docker 镜像: 在项目根目录执行以下命令构建 Docker 镜像。
csharp 复制代码
docker build -t your_image_name:latest .

注意后面有个点

  1. 测试 Docker 镜像: 可以在本地运行一个 Docker 容器来测试构建的镜像。
csharp 复制代码
docker login  # 登录到 Docker 仓库
docker tag your_image_name:latest your_docker_hub_username/your_image_name:latest
docker push your_docker_hub_username/your_image_name:latest
  1. 用宝塔发布到线上
    在软件市场搜索 docker

    获取镜像

    创建容器

    注意要点+号 把端口映射添加进去

在IP地址池中添加当前服务器的公网ip,这样就可以通过公网地址来访问

相关推荐
Tingjct几秒前
Linux常用指令
linux·运维·服务器
daad77725 分钟前
wifi_note
运维·服务器·数据库
IT界的老黄牛27 分钟前
Linux 压缩命令实战:tar、gzip、bzip2、xz、zstd 怎么选?一篇讲清楚
linux·运维·服务器
12345,catch a tiger1 小时前
虚拟机ubuntu安装Vmware Tools
linux·运维·ubuntu
不是书本的小明3 小时前
K8S应用优化方向
网络·容器·kubernetes
程序猿编码3 小时前
一个授予普通进程ROOT权限的Linux内核级后门:原理与实现深度解析
linux·运维·服务器·内核·root权限
小夏子_riotous3 小时前
openstack的使用——9. 密钥管理服务Barbican
linux·运维·服务器·系统架构·centos·云计算·openstack
梦想的旅途24 小时前
自动化运营如何防封?解析 API 协议下的拟人化风控算法
运维·自动化
AC赳赳老秦4 小时前
OpenClaw text-translate技能:多语言批量翻译,解决跨境工作沟通难题
大数据·运维·数据库·人工智能·python·deepseek·openclaw
andeyeluguo5 小时前
docker总结
运维·docker·容器