【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,这样就可以通过公网地址来访问

相关推荐
万联WANFLOW2 小时前
异地厂区视频监控远程运维:从组网到安全的实施要点
运维·网络·安全·企业组网·sdwan
十碗饭吃不饱2 小时前
SSH 密钥认证详解:原理、实操、参数、排错与加固
运维·ssh
echoarts3 小时前
服务器连不上?FileZilla 改被动模式就好了
运维·服务器·其他
无言听风雨丶3 小时前
Redis 运维实战与排错
运维·数据库·redis
QXWZ_IA3 小时前
变电站数字孪生巡检的能力分层、数据接入与空间计算边界
运维·服务器·空间计算
miaobinfei4 小时前
docker拉取dify镜像,执行docker compose up -d 报错
运维·docker·容器
女神下凡4 小时前
芯参谋(85):Linux_PPI_NAND_驱动开发指南
linux·运维·arm开发·驱动开发·单片机·嵌入式硬件·设计规范
天远API5 小时前
零信任架构实战:基于天远租凭分期报告构建自动化智慧租房免押分期履约评估网关
运维·人工智能·架构·自动化
我要见SA姐15 小时前
Chrome 扩展安全攻防实录:从权限滥用到供应链投毒
运维·人工智能·python·机器学习·自动化
kobe_OKOK_5 小时前
docker compose命名卷 映射到宿主机的路径
运维·docker·容器