六、基于多阶段构建减小镜像体积降低复杂度
本文是《Docker必知必会系列》第六篇,原文发布于个人博客:悟尘记。
上一篇:Docker必知必会系列(五):Docker 数据持久化存储与性能调优
一、引言如何减小所构建镜像的体积最非常具有挑战性的事情。Docker 17.05版本以后,新增了Dockerfile多阶段构建。所谓多阶段构建,实际上是允许一个Dockerfile 中出现多个 FROM 指令。
二、单 Dockerfile 构建镜像如果将所有的构建过程都包含在一个 Dockerfile 中,包括项目及其依赖库的编译、测试、打包等流程,这样会带来的一些问题:
镜像层次多,镜像体积较大,部署时间变长
源代码存在泄露的风险
下面是一个简单示例:
123456789FROM golang:1.14-alpineRUN apk --no-cache add git ca-certificatesWORKDIR /go/src/github.com/go/lixl.cn/helloworld/COPY app.go .RUN go get -d -v github.com/go-sq ...
编程开发
未读最新docker安装教程1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283最新安装docker教程更改CentOs Yum源rm -rf /etc/yum.repos.d/*wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo或curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repoimage-20241204143942094一键安装docker脚本bash <(curl -sSL https://linuxmirrors.cn/docker.sh)安装完成 +----------- ...
安装docker1.安装依赖包
1yum install -y yum-utils device-mapper-persistent-data lvm2
2.配置docker yum源
yum-config-manager –add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3.安装docker
1yum install -y docker-ce
4.修改docker配置文件
1mkdir /etc/docker -p
12345678910111213141516171819202122232425262728293031323334353637sudo tee /etc/docker/daemon.json <<-'EOF'{ "registry-mirrors": [ "https://docker.credclouds.com", "https://k8s.credcloud ...
elasticsearch 8.0 centos8安装部署https://blog.csdn.net/persistence_PSH/article/details/124760748
elasticsearch 8.0官方下载地址:
https://www.elastic.co/cn/downloads/past-releases/elasticsearch-8-0-0
选择 LINUX X86_64
解压安装包
tar -zxvf elasticsearch-8.0.0-linux-x86_64.tar.gz
移动到指定文件夹
mv elasticsearch-8.0.0 /usr/local/elasticsearch-8.0
进入指定文件夹
cd /usr/local/elasticsearch-8.0/
新建data和log文件夹用于存放数据
mkdir data
mkdir log
进入config文件夹
cd config/
修改elasticsea ...
编程开发
未读Tomcat部署全攻略:6种方式从入门到自动化,运维工程师必收藏作为Linux运维工程师,Tomcat部署是一定会遇到的基础操作。
今天,梳理一遍Tomcat的6种部署之路,从新手级的手动操作到运维级的自动化部署,每种方式的实操步骤、优缺点和适用场景都讲透,看完直接套用!
一、新手入门:传统WAR包拷贝部署(webapps目录)
这是最经典也最基础的部署方式,几乎所有运维新手的第一次Tomcat部署都是从这里开始的。实操步骤:
准备好项目的WAR包(如myapp.war),确保包内目录结构完整(WEB-INF、classes等核心目录齐全);
进入Tomcat安装目录,找到核心部署目录apache-tomcat-9.0/webapps/;
直接将myapp.war拷贝到webapps目录下;
启动Tomcat(执行bin/startup.sh),Tomcat会自动解压WAR包为myapp文件夹并完成部署;
验证:浏览器访问 http://服务器IP:8080/myapp,能正常访问则部署成功。
优点:零配置、操作简单,适合单机 ...
一篇搞懂Tomcat ,运维小白也能轻松上手!tomcat使用• 前置知识-
• tomcat概念
• tomcat作用
• 安装部署tomcat
• 环境信息
• 安装jdk
• 安装tomcat
• 启动tomcat
• tomcat目录结构
• bin目录
• conf目录
• logs目录
• webapps目录
• 案例:部署zrlog应用
• tomcat部署多实例
• 背景
• 部署步骤
前置知识tomcat概念Tomcat是由Java编写的一个开源的、轻量级的应用服务器,是Apache软件基金会的一个项目。它实现了Java Servlet、JavaServer Pages(JSP)和Java Expression Language(EL)等Java技术,用于支持在Java平台上运行的动态Web应用程序。Tomcat的全名是Apache Tomcat。
tomcat作用Tomcat 是一个开源的 Java Servlet 容器,主要用于运行 Java Web 应用程序。
运行 Java Web 应用程序
• Servlet 和 JSP 支持Tomca ...
12个提升日常效率的Python脚本1. 剪贴板历史记录器1234567891011121314151617import timeimport pypercliphistory = []defclipboard_logger(): recent_value = "" whileTrue: tmp_value = pyperclip.paste() if tmp_value != recent_value: recent_value = tmp_value history.append(recent_value) print(f"Copied: {recent_value}") time.sleep(1)clipboard_logger()
用途:自动记录剪贴板历史,可随时找回之前复制的内容,相当于给 Ctrl+C 加了“撤销”功能。
2. Wi-Fi 密码快速提取12345678910111213impor ...
Python 基础语法2:组合数据类型、异常6、数据组合类型
(1)序列在python中,有这样一些类型,它们的成员是有序排列的,并且可以通过下标访问成员,这些类型称之为序列;序列包括:列表、range、元组和字符串;
在字符串中的很多操作,序列也是支持的,部分常用的函数如下:
函数
描述
备注
len(item)
计算容器中元素个数
del(item)
删除变量
del 有两种方式
max(item)
返回容器中元素最大值
如果是字典,只针对 key 比较
min(item)
返回容器中元素最小值
如果是字典,只针对 key 比较
描述
Python****表达式
结果
支持的数据类型
切片
“0123456789”[::-2]
“97531”
字符串、列表、元组
序列的通用操作包括如下:
运算符
Python****表达式
结果
描述
支持的数据类型
+
[1, 2] + [3, 4]
[1, 2, 3, 4]
合并
字符串、列表、元组
*
[“Hi!”] * 4
[‘Hi!’, ‘Hi!’, ‘Hi! ...
编程开发
未读PyCharm 常用快捷键1、代码编辑快捷键
序号
快捷键
作用
1
CTRL+ALT+SPACE
快速导入任意类
2
CTRL+SHIFT+ENTER
代码补全
3
SHIFT+F1
查看外部文档
4
CTRL+Q
快速查找文档
5
CTRL+P
参数信息(在方法中调用的参数)
6
CTRL+MOUSEOVERCODE
基本信息
7
CTRL+F1
显示错误或警告的描述
8
CTRL+INSERT
生成代码
9
CTRL+O
重载方法
10
CTRL+ALT+T
包裹代码
11
CTRL+/
单行注释
12
CTRL+SHIFT+/
块注释
13
CTRL+W
逐步选择代码(块)
14
CTRL+SHIFT+W
逐步取消选择代码(块)
15
CTRL+SHIFT+[
从当前位置选择到代码块的开始
16
CTRL+SHIFT+]
从当前位置选择到代码块的结束
17
ALT+ENTER
代码快速修正
18
CTRL+ALT+L
代码格式标准化
19
CTRL+ALT+O
最佳化导入
...
Python 类的正确打开方式:从新手到进阶的第一步学 Python 的人,大多数都会在某个阶段被“类”卡住。刚接触的时候,很多人都会觉得:“这东西好抽象啊,像不像传说中的编程黑魔法?”😵
别慌,其实类没那么神秘。你可以把它想成生活里常见的“模具”或者“样板”。就像裁缝做衣服,先得有个样板,才能照着样板去裁布、缝衣服。类就是那个样板,而衣服就是你根据样板做出来的“对象”。
今天,我们就把 Python 的类从头到尾聊一遍,不整花里胡哨的玄学,把它拆开、讲透,让你读完之后能说一句:“哦,原来就这回事啊!”
一、类与对象:从生活例子讲起假设你家里有一只猫,叫 Mimi,今年 2 岁。你想在代码里把它记录下来,该怎么办?
先来点最直接的:
123456789class Cat: def __init__(self, name, age): self.name = name # 属性:姓名 self.age = age # 属性:年龄# 基于类创建对象my_cat = Cat("Mimi", 2)print(my_cat.na ...
