Docker 镜像构建可以分享的快乐

news/2024/4/29 19:31:48/文章来源:https://blog.csdn.net/Hogwartstester/article/details/126623662

通过上一篇 Dockerfile 语法与指令的学习,本节就开始使用Dockerfile 来制作自己的 Docker 镜像啦。

Docker 镜像构建

新建 app.py 文件

from flask import Flask app = Flask(__name__) @app.route('/') def hello(): return 'Hello World! Hogwarts.'

本代码主要功能是当我们访问页面的时候显示一段文字“Hello World! Hogwarts.”。

新建 Dockerfile-build 文件

FROM python:3.7-alpine LABEL maintainer="hogwarts" # 工作路径设定为 /code WORKDIR /code # 复制 app.py 到容器内 /code 目录 COPY app.py /code # 创建环境变量给 Flask 使用 ENV FLASK_APP app.py ENV FLASK_RUN_HOST 0.0.0.0 # 安装 gcc 工具、python 的依赖 RUN apk add --no-cache gcc musl-dev linux-headers && pip install flask # 映射端口 EXPOSE 5000 STOPSIGNAL SIGTERM # 为容器设置默认启动命令 CMD ["flask", "run"]

使用 build 命令构建镜像,

docker build -f Dockerfile-build -t app:v1.0 .

  • 默认 Dockerfile 要在当前目录下,才可以直接运行 docker build。

    如果 Dockerfile 在别的路径下面则需要添加-f参数指定Dockerfile的路径。

  • -t app:v1.0:指定构建的镜像名字

  • .:构建镜像时的上下文目录。固定写法,构建镜像时要先切换到放有 Dockerfile 的目录下。

68aeb378efbb76c175baa36277fec028.jpeg

  • 镜像构建完成后,就可以使用新镜像提供服务啦。可以使用 docker images | grep app 来查看生成的镜像。

ac715790aef25c4da2f375cea529a5c0.jpeg

  • 我们可以通过 docker run 命令启动我们自己构建的镜像噢。最后通过浏览器访问 http://你的IP:5000 来访问启动的服务。

docker run --name app -p 5000:5000 app:v1.0f6b12009f528932b9b62c3f7400ac118.jpeg

最后,我们自己构建的镜像可以通过 docker save 命令导出给别的小伙伴使用,还可以用 docker push 命令推送到 registry 服务器上给别的小伙伴使用呢,是不是很便捷呀!

免费领取:性能测试+接口测试+自动化测试+测试开发+测试用例+简历模板+测试文档


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

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

相关文章

物业公司如何解决降本增收?快鲸智慧社区系统来帮你

当下物业行业要解决的问题是降本增收,传统物业很难做到这点,想要生存并可持续发展,唯一的一条出路就是发展智慧物业,用技术对传统物业进行改造,实现降本增收的目标,这也是不少物业企业向智慧物业转型的原因…

【老王读Spring Transaction-1】从EnableTransactionManagement顺藤摸瓜,研究@Transactional的实现原理

从EnableTransactionManagement顺藤摸瓜,研究Transactional的实现原理前言版本约定正文EnableTransactionManagementProxyTransactionManagementConfiguration——Spring 事务配置的核心类TransactionInterceptorTransactionAttributeSource小结前言 Spring 对事务…

【Linux】Rocky 9.0 Podman服务无法正常启动

Rocky Linux 9.0发布后,我在本地虚拟机对该版本进行了安装和测试,发现Podman服务在某些情况下,无法正常启动。 当/etc/selinux/config配置中,SELINUXenforcing为默认配置的时候,启动Podman服务,会出现下面的…

Vue3.0中使用路由进行跳转和传参以及取值

1、在vue2.0中的路由跳转 2、在vue2.0中取出路由的传值 在vue3.0中取消了vue2.0的部分api,新增的两个API,分别是useRouter和useRoute。 3、vue3.0中路由跳转 1)第一步先引入import {useRouter} from vue-router; 2)第二步 const router useR…

使用SSH反向转发服务器上的请求到个人电脑

开启服务器ssh网关功能 修改/etc/ssh/sshd_config文件,将GatewayPorts 修改为yes,并放开AllowAgentForwarding yes和AllowTcpForwarding yes,GatewayPorts默认为no,AllowAgentForwarding、AllowTcpForwarding默认被注释 修改完成…

数字逻辑设计(4)

文章目录数组逻辑设计(4)1. 组合逻辑电路中的险象一、门延迟二、逻辑冒险三、险象的分类1)静态冒险2)动态冒险3)功能冒险2. 险象的判断及消除险象的判断1)代数法2) 卡诺图法险象的消除1&#xf…

paddlepaddle

项目用到了paddlespeech2,学了几天paddlepaddle,简单记录一下: 文章目录1 手写数字识别任务2 极简方案构建手写数字识别模型模型设计训练配置训练过程模型测试3【手写数字识别】之数据处理4【手写数字识别】网络结构4.1 经典的全连接神经网络4.2 卷积神经…

14天刷爆LeetCode算法学习计划——Day02双指针(2)

Day02——双指针一、前言二、知识点三、LeetCode189. 轮转数组1.题目2.解题示意图3.解题思路4.代码实现5.验证代码6.注意点四、结语一、前言 盲目刷题只会让自己心态爆炸,所以本期14天算法学习计划,也是LeetCode上的 [算法] 学习计划,在本专栏…

【LeetCode】统计全 1 子矩形(单调栈)

1504. 统计全 1 子矩形 - 力扣(LeetCode) 一、题目 给你一个 m x n 的二进制矩阵 mat ,请你返回有多少个 子矩形 的元素全部都是 1 。 示例 1: 输入:mat [[1,0,1],[1,1,0],[1,1,0]] 输出:13 解释&#x…

TCL基础学习 字符串

基本指令 Tcl将所有的变量值视作字符串,并将他们作为字符串来保存。下标列出了比较有用的字符串操作命令: append将值追加到字符串尾binary二进制字符串操作format字符串格式化regexp正则表达式regsub用字符串模式进行字符串模拟匹配和替换scan字符串分…

计算机网络面试(一)网络分层结构

文章目录为什么使用分层结构OSI参考模型分层结构——OSI参考模型ISO各个分层解析TCP/IP各个分层解析为什么使用分层结构 对网络分层以后,可以将问题细化,使得问题更加容易分析。把一个大的系统分拆成小的体系后,便于在各个层次上制定标准&am…

《三叶虫与其他故事》我的恐惧如涟漪扩散,荡漾过百万年的时光

《三叶虫与其他故事》我的恐惧如涟漪扩散,荡漾过百万年的时光 布里斯D’J.潘凯克 Breece D‘J Pancake(1952-1979),美国作家。二十六岁时自杀身亡,生前仅发表过六篇小说。潘凯克深受美国南方文学传统的影响&#xff0c…

3dmax的Corona的渲染器材质要如何完全转换VRay材质?

经常有伙伴问怎么转化材质,将CR转换成vr或者将VR转换CR~其实这一点需要通过材质转换插件即可转换~ 方法一:cr转vr材质,自带 第一步:确认自己的corona渲染器版本为corona5及以上: ​ 第2步 确认自己的vray渲染器版本…

springboot手机推荐网站毕业设计源码052329

摘 要 随着社会的发展,计算机的优势和普及使得手机推荐网站的开发成为必需。手机推荐网站主要是借助计算机,通过对首页、手机问答、公告消息、手机资讯、手机测评、我的、跳转到后台等信息进行管理。减少管理员的工作,同时也方便广大用户对个…

voip|网络电话,软件实现电信座机

原理 我们办理的宽带一般都含有座机服务,有一个座机号,自己买个座机插到光猫的语音口上就能用。光猫内置语音服务,座机通过电话线接上光猫来打电话,这个语音服务本质上是VOIP,基于IP的语音传输,光猫在VOIP…

Python输入漏洞利用(Python input漏洞)

背景条件 源码为python编写的程序该程序包含input函数,利用用户或自动化输入获取参数进行下一步 漏洞函数 input():接收用户输入且不修改输入的类型raw_input():接收用户输入并强制修改为字符串类型 漏洞源码示例 #!/usr/bin/python3 #-*- …

Revit中模板类图元使用后如何处理?

Revit中模板类图元使用后如何处理? 模板这类图元在使用结束后进行拆除的在正常建模形之后它就会一直存在虽然我们可以进行视图处理,但是新建立视图还会显示这类图元,我们可以用其他方法处理它么? 这里我们可以用阶段化来控制,这里以小别墅为…

通过配置文件修改docker容器端口映射

有时候,我们需要给正在运行的容器添加端口映射,百度一下发现很多都是通过iptables,或者是通过将当前容器通过docker commit命令提交为一个镜像,然后重新执行docker run命令添加端口映射。这种方法虽然可以,但是感觉好像…

java基于ssm课程建设制作服务平台系统

1.分管理员和客户,分别有注册账号,修改密码,等功能。2.管理员模块可以在不同的专业专栏上传视频,word文稿,并修改视频名,文稿,视频的增删功能,并给视频标注A B C三个等级3.用户可以在不同的专业专栏观看视频(可以看到abc等级),可以下载管理员所上传文稿,…

【图解HTTP】HTTP协议基础

【HTTP协议用于客户端和服务器端之间的通信】 【客户端】请求访问文本或图像等资源的一段 【服务器端】提供资源响应的一端 客户端发送请求,服务器端回复响应 从客户端开始建立通信的,服务器端在没有接受到请求之前不会发送响应。 【请求报文】 【响…