如何在docker部署一个python项目

导语:
我之前已经实现了在服务器上直接部署一个文件,但是那种部署方式有个明显的缺陷:我如果需要在其他机器部署该项目时,需要重新配置项目所依赖的环境。因此我们需要一种只需要配置一次环境依赖,就可以在其他机器上随心所欲部署项目的方式——docker容器化部署!
在这里插入图片描述

安装docker:
想要在docker部署一个项目,我们首先需要有docker的环境,具体的配置方式可以参考我另一篇文章:https://blog.csdn.net/Test_the_rookie/article/details/132166094?spm=1001.2014.3001.5501
编写dockerfile文件:
如果你看看这里,你肯定会疑问什么是dockerfile文件?它的作用又是什么?
dockerfile:是一种文本文件,用于定义docker镜像构建的过程和配置,里面含有一系列的参数和配置,如基础镜像、依赖项、工作目录等。通过dockerfile能够重复快速的构建镜像,生成的镜像的环境以及依赖完全一致。
下面是一个dockerfile文件的基础示例。
在这里插入图片描述
将项目复制到宿主机:
参考之前直接在Linux机器上部署项目的文章:https://blog.csdn.net/Test_the_rookie/article/details/131452195?spm=1001.2014.3001.5501

启动docker服务:
执行命令:docker version,出现下图所示的内容时,表示docker服务未能启动
在这里插入图片描述
此时需要执行命令:sudo systemctl restart docker,然后执行命令docker version 出现下图所示的内容表示docker服务已启动
在这里插入图片描述

构建docker镜像:
执行命令:docker build -t 镜像名 .
该命令的含义如下:
docker build:构建镜像的命令
-t:用于指定新镜像的名称
. :表示构建的路径,代表的是当前目录,即构建镜像时,会在当前目录找到dockerfile文件,会根据dockerfile文件的配置构建镜像
当出现图示内容时,表示镜像构建成功!
在这里插入图片描述
可以通过命令:docker images,查看容器中的镜像,我标记的就是刚才构建的test镜像
在这里插入图片描述

启动容器:
执行命令:docker run -d -p 映射端口:项目端口号 镜像名 (-d 表示后台启动)
在这里插入图片描述
通过命令:docker ps -a ,可以查看正在运行的容器,up表示正在运行,exited表示容器已经停止运行
在这里插入图片描述
可以通过命令:docker logs -f 容器id 查看容器的运行日志
在这里插入图片描述

访问:
在其同一局域网的其他机器上,输入https:\宿主机ip:映射的端口号,即可访问对应的项目

在这里插入图片描述

拓展:

1.设置全局镜像加速,我们上面的示例是的加速源,是针对某一个容器的,如果其他容器想要加速,则每次都需要在dockerfile中设置加速源。为了方便操作,我们可以在宿主机执行命令:
sudo vim /etc/docker/daemon.json,进入文件中后,切入编辑模式,在配置中添加如下内容
{
“registry-mirrors”: [“https://xxxxxxxx.mirror.aliyuncs.com”]
}
xxxxxxxx 替换为您的阿里云加速器地址。您可以在阿里云容器镜像服务中找到您的专属加速器地址。也可以配置成其他加速源,或者多个加速源并存。配置完成之后,执行命令sudo systemctl restart docker 重启docker服务。后续dockerfile中就无需在设置加速源了 。
2.dockerfile文件的命名不用强制为dockerfile,如果使用其他名称时,构建镜像时,需要使用-f 参数指定对应dockerfile文件的路径以及名称,用于构建镜像。
3.在启动容器使用-p参数指定端口映射时,一定要注意,第一个端口是你要映射的端口,第二个是你项目中指定的端口号,不是dockfile中外抛的端口号。

                            -------------------------------学海无涯

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/61922.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

日期切换

组件&#xff1a;<template><div class"time-picker"><el-radio-group size"small" v-model"timeType" change"changePickerType"><el-radio-button label"hour" v-if"isShow">时</el…

【gridsample】地平线如何支持gridsample算子

文章目录 1. grid_sample算子功能解析1.1 理论介绍1.2 代码分析1.2.1 x,y取值范围[-1,1]1.2.2 x,y取值范围超出[-1,1] 2. 使用grid_sample算子构建一个网络3. 走PTQ进行模型转换与编译4. 走QAT进行模型转换与编译 实操以J5 OE1.1.60对应的docker为例 1. grid_sample算子功能解析…

Rust语法:变量,函数,控制流,struct

文章目录 变量可变与不可变变量变量与常量变量的Shadowing标量类型整数 复合类型 函数控制流if elseloop & whilefor in structstruct的定义Tuple Structstruct的方法与函数 变量 可变与不可变变量 Rust中使用let来声明变量&#xff0c;但是let声明的是不可变变量&#x…

android APP内存优化

Android为每个应用分配多少内存 Android出厂后&#xff0c;java虚拟机对单个应用的最大内存分配就确定下来了&#xff0c;超出这个值就会OOM。这个属性值是定义在/system/build.prop文件中. 例如&#xff0c;如下参数 dalvik.vm.heapstartsize8m #起始分配内存 dalvik.vm.…

Flink源码之TaskManager启动流程

从启动命令flink-daemon.sh可以看出TaskManger入口类为org.apache.flink.runtime.taskexecutor.TaskManagerRunner TaskManagerRunner::main TaskManagerRunner::runTaskManagerProcessSecurely TaskManagerRunner::runTaskManager //构造TaskManagerRunner并调用start()方法 …

Java获取路径时Class.getResource()和ClassLoader.getResource()区别

Java中取资源时&#xff0c;经常用到Class.getResource()和ClassLoader.getResource()&#xff0c;Class.getResourceAsStream()和ClassLoader().getResourceAsStream()&#xff0c;这里来看看他们在取资源文件时候的路径有什么区别的问题。 环境信息&#xff1a; 系统&#…

【插入排序】直接插入排序 与 希尔排序

目录 1. 排序的概念&#xff1a; 2.插入排序基本思想 3.直接插入排序 4.希尔排序 1. 排序的概念&#xff1a; 排序&#xff1a;所谓排序&#xff0c;就是使一串记录&#xff0c;按照其中的某个或某些关键字的大小&#xff0c;递增或递减的排列起来的操作。 稳定性&#xf…

【ECharts】树图

将3级改成4级 demo上是3层&#xff0c;如何实现4层。 initialTreeDepth: 4

竞赛项目 深度学习图像风格迁移

文章目录 0 前言1 VGG网络2 风格迁移3 内容损失4 风格损失5 主代码实现6 迁移模型实现7 效果展示8 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 深度学习图像风格迁移 - opencv python 该项目较为新颖&#xff0c;适合作为竞赛课题…

微服务间消息传递

微服务间消息传递 微服务是一种软件开发架构&#xff0c;它将一个大型应用程序拆分为一系列小型、独立的服务。每个服务都可以独立开发、部署和扩展&#xff0c;并通过轻量级的通信机制进行交互。 应用开发 common模块中包含服务提供者和服务消费者共享的内容provider模块是…

程序员怎么利用ChatGPT解放双手=摸鱼?

目录 1. 当你遇到问题时为你生成代码ChatGPT 最明显的用途是根据查询编写代码。我们都会遇到不知道如何完成任务的情况&#xff0c;而这正是人工智能可以派上用场的时候。例如&#xff0c;假设我不知道如何使用 Python 编写 IP 修改器&#xff0c;只需查询 AI&#xff0c;它就…

【每日一题】1572. 矩阵对角线元素的和

【每日一题】1572. 矩阵对角线元素的和 1572. 矩阵对角线元素的和题目描述解题思路 1572. 矩阵对角线元素的和 题目描述 给你一个正方形矩阵 mat&#xff0c;请你返回矩阵对角线元素的和。 请你返回在矩阵主对角线上的元素和副对角线上且不在主对角线上元素的和。 示例 1&a…