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

docker从下载到Python项目打包到容器中运行(解决下拉超时问题)

  • docker安装(如果第一步或者第二步没有成功,说明是你的镜像源有问题,私聊我获取镜像源)镜像位置_/etc/yum.repos.d/CentOS-Base.repo
  1. sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  2. sudo yum install docker-ce docker-ce-cli containerd.io
  3. 启动docker(如果无法启动,返回到/etc/yum.repos.d/目录下,把****docker****那个文件的改名字,最后一个.back删除,只保留前面的部分)

sudo systemctl start docker 

sudo systemctl enable docker

  1. 测试docker

docker version

  • 项目打包部署:
  1. 编写Python代码

# app.py

from flask import Flask

app = Flask(__name__)

@app.route('/')

def hello_world():

        return 'Hello, Docker!'

if __name__ == "__main__":

        app.run(host='0.0.0.0', port=5000)

  1. 创建依赖文件(requirements.txt)

flask==2.0.1

也可以使用命令行创建,命令行创建的依赖文件包含本地所有的安装包。

pip freeze > requirements.txt

  1. 编写Dockerfile

文件名字就是Dockerfile

# 使用官方Python基础镜像

FROM python:3.9-slim

# 设置工作目录

WORKDIR /usr/src/app

# 将项目的依赖文件复制到工作目录

COPY requirements.txt ./

# 安装依赖

RUN pip install --no-cache-dir -r requirements.txt

# 将Python脚本复制到容器中

COPY . .

# 暴露应用的端口

EXPOSE 5000

# 运行Python应用

​​​​​​​CMD ["python", "app.py"]

  1. 构建Docker镜像(my-python-app .)后面的‘.’必须有,名字随便起。但是前提是要和Dockerfile文件同一目录下运行这条命令。

docker build -t my-python-app .

5、运行容器

构建完成后,运行以下命令启动容器:

docker run -d -p 5000:5000 my-python-app

该命令将容器中的5000端口映射到本地主机的5000端口,你可以在浏览器中访问http://localhost:5000,查看应用是否成功运行,输出应为“Hello, Docker!”。

  • 下拉超时构建

下拉报错:

[+] Building 856.8s (2/2) FINISHED                                                                                                                                                          docker:default

 => [internal] load build definition from Dockerfile                                                                                                                                                  0.0s

 => => transferring dockerfile: 420B                                                                                                                                                                  0.0s

 => ERROR [internal] load metadata for docker.io/library/python:3.8                                                                                                                                 856.7s

------

 > [internal] load metadata for docker.io/library/python:3.8:

------

Dockerfile:2

--------------------

   1 |     # 使用官方Python 3.8镜像作为基础镜像

   2 | >>> FROM python:3.8

   3 |    

   4 |     # 设置工作目录

--------------------

ERROR: failed to solve: python:3.8: failed to resolve source metadata for docker.io/library/python:3.8: failed to do request: Head "https://docker.registry.cyou/v2/library/python/manifests/3.8?ns=docker.io": read tcp 192.168.121.138:36942->172.64.107.134:443: read: connection reset by peer

创建一个文件:

vm /etc/docker/daemon.json

构建链接

{

    "registry-mirrors": [

        "https://docker.registry.cyou/",

        "https://docker-cf.registry.cyou/",

        "https://dockercf.jsdelivr.fyi/",

        "https://docker.jsdelivr.fyi/",

        "https://dockertest.jsdelivr.fyi/",

        "https://mirror.aliyuncs.com/",

        "https://dockerproxy.com/",

        "https://mirror.baidubce.com/",

        "https://docker.m.daocloud.io/",

        "https://docker.nju.edu.cn/",

        "https://docker.mirrors.sjtug.sjtu.edu.cn/",

        "https://docker.mirrors.ustc.edu.cn/",

        "https://mirror.iscas.ac.cn/",

        "https://docker.rainbond.cc/",

        "https://jq794zz5.mirror.aliyuncs.com"

    ]

}

重启docker

# 重新加载配置

   systemctl daemon-reload

# 重启docker

   systemctl restart docker

# 查看配置是否生效

   docker info

生效示例:

参考链接:

[1]=> ERROR [internal] load metadata for docker.io/library/alpine:3.13+vscode+python+docker+本地调试问题-CSDN博客

[2] 解决docker一直出现“=> ERROR [internal] load metadata for docker.io/library/xxx“的问题-CSDN博客

[3] Python项目打包并部署到Docker_python项目打包成docker-CSDN博客


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

相关文章:

  • 【C++项目实战】类和对象入门实践:日期类实现万字详解
  • nginx学习之路-nginx配置https服务器
  • 【踩坑指南2.0 2025最新】Scala中如何在命令行传入参数以运行主函数
  • 数据插入操作的深度分析:INSERT 语句使用及实践
  • unity学习6:unity的3D项目的基本界面和菜单
  • 设计模式 创建型 工厂模式(Factory Pattern)与 常见技术框架应用 解析
  • 【three.js】Shader着色器
  • 如何弥补开源大语言模型解决推理任务的不足
  • 深度 SEO 优化
  • 常见的框架漏洞复现
  • HarmonyOS NEXT应用开发实战(一):边学边玩,从零开发一款影视APP
  • 如何使用SparkSql
  • GESP202406 二级【计数】题解(AC)
  • html生成注册与登录代码
  • 使用LINUX的dd命令制作自己的img镜像
  • 【CSS】第一天 基础选择器与文字控制属性
  • 实时数仓:基于数据湖的实时数仓与数据治理架构
  • 【人工智能】基于Python与OpenCV构建简单车道检测算法:自动驾驶技术的入门与实践
  • [读书日志]从零开始学习Chisel 第四篇:Scala面向对象编程——操作符即方法(敏捷硬件开发语言Chisel与数字系统设计)
  • 【开源监控工具】Uptime Kuma:几分钟设置实时监控你的网站性能
  • 计算机网络掩码、最小地址、最大地址计算、IP地址个数
  • Android学习20 -- NDK5--操作camera(TODO)
  • 【能用的方案】springBoot集成netty中如何使用@Value(通过依赖注入(DI)来访问)配置文件中的属性值
  • MaxKB知识库问答系统v1.9版本有哪些具体的改进?
  • 【网络安全 | 漏洞挖掘】通过模拟功能实现提权(Bugcrowd)
  • ESP32学习--SPIFFS文件系统