如何在docker部署一个python项目

news/2024/6/17 20:14:19 标签: docker, java, eureka

导语:
我之前已经实现了在服务器上直接部署一个文件,但是那种部署方式有个明显的缺陷:我如果需要在其他机器部署该项目时,需要重新配置项目所依赖的环境。因此我们需要一种只需要配置一次环境依赖,就可以在其他机器上随心所欲部署项目的方式——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.niftyadmin.cn/n/4934520.html

相关文章

在多页面应用和单页面应用中(例如vue)怎么提高seo搜索引擎优化

那么 我们要先知道 搜索引擎是怎么工作的? 搜索引擎是通过一系列步骤来工作的,以下是其基本原理: 1、网络爬虫:搜索引擎使用网络爬虫(也称为蜘蛛、机器人)来从互联网上抓取网页。网络爬虫按照预定义的规则…

Google FixMatch:SOTA 在半监督学习基准测试中的性能

作为当前计算机视觉应用的首选,深度网络通常通过监督学习(一种需要标记数据集的方法)来实现其强大的性能。尽管人工智能多年来取得了许多成就和进步,但标记数据的关键任务仍然落在人类专家身上。他们很难满足那些数据饥渴的深度网…

C语言开发基础知识(一)

文章目录 数据类型宏变量函数inline 内联函数static 关键字的作用const 关键字的作用extern 关键字的作用volatile 关键字的作用include 关键字的作用数组、字符串指针堆内存管理结构体文件操作数据类型 C语言中数据类型分有符号和无符号,默认是有符号的。 有符号类型: 数据…

WebRTC本地视频通话使用ossrs服务搭建

iOS开发-ossrs服务WebRTC本地视频通话服务搭建 之前开发中使用到了ossrs,这里记录一下ossrs支持的WebRTC本地服务搭建。 一、ossrs是什么? ossrs是什么呢? SRS(Simple Realtime Server)是一个简单高效的实时视频服务器,支持RTM…

基于nodejs+vue+elementui文学创作的社交论坛新闻文章管理系统

课题主要采用vue技术和MySQL数据库技术以及vue框架进行开发。系统主要包括个人中心、用户管理、文章类型管理、文章信息管理、文章举报管理、警告信息管理、系统管理等功能,从而实现智能化的社交论坛管理方式,提高社交论坛管理的效率。 通过对基于文学创…

Mysql中插入数据,并返回自增主键的值

创建数据库和表使用 insert into 进行插入数据使用 RETURN_GENERATED_KEYS 进行返回插入的这条数据 具体方法如下: Testvoid addGetPk(){try{Statement stmt conn.createStatement();String sql String.format("insert into t_students values(null,%s,%s,%d…

Java多线程(4)---死锁和Synchronized加锁流程

目录 前言 一.synchronized 1.1概念 1.2Synchronized是什么锁? 1.3Synchronized加锁工作过程 1.4其他优化操作 二.死锁 2.1什么是死锁 2.2死锁的几个经典场景 2.3死锁产生的条件 2.4如何解决死锁 🎁个人主页:tq02的博客_CSDN博客…

AI项目一:mediapipe测试

若该文为原创文章,转载请注明原文出处。 一. 引言 MediaPipe 是一款由 Google Research 开发并开源的多媒体机器学习模型应用框架。在谷歌,一系列重要产品,如 YouTube、Google Lens、ARCore、Google Home 以及 Nest,都已深度整合了…