docker Alpine一个只有5M小而美的Docker镜像
docker Alpine一个只有5M小而美的Docker镜像
参考链接:
Alpine 一个只有5M的Docker镜像
http://www.infoq.com/cn/news/2016/01/Alpine-Linux-5M-Docker?utm_source=tuicool&utm_medium=referral
使用alpinelinux 构建 golang http 启动了才15mb
http://blog.csdn.net/freewebsys/article/details/53635529
http://blog.csdn.net/freewebsys
Alpine命令
https://wiki.alpinelinux.org/wiki/Alpine_Linux_package_management
alpine里安装bash
https://github.com/yikaus/docker-alpine-bash
docker pull yikaus/alpine-bash
docker run --rm -ti yikaus/alpine-bash /bin/bash
自己编译镜像
cat Dockerfile
FROM alpine:3.5MAINTAINER liang <liang@gmail.com>
RUN apk add --update bash && rm -rf /var/cache/apk/*编译成镜像
docker build -t alpinebash .docker run --rm -ti alpinebash /bin/bash 进入bash
Alpine镜像安装nginx
参加链接:
http://www.cnblogs.com/ee900222/p/docker_3.html
https://github.com/smebberson/docker-alpine/blob/master/alpine-nginx/Dockerfile
FROM alpine:latest
MAINTAINER liang liang@gmail.comRUN mkdir /run/nginx && mkdir /data
# install nginx
RUN apk --update add nginx && apk add --update bash && rm -rf /var/cache/apk/*
ADD nginx.conf /etc/nginx/nginx.conf
ADD index.html /data/index.htmlEXPOSE 80CMD ["nginx", "-g", "daemon off;"]编译镜像
docker build -f Dockerfile -t alpinenginx .
运行
docker run --name=anginx -d -p 8088:80 alpinenginx开放8088端口防火墙
访问:http://192.168.1.181:8088/ 报404docker exec -ti anginx /bin/bash 进入bash里查看nginx配置
docker cp anginx:/etc/nginx/nginx.conf nginx.conf
增加配置
server{listen 80;server_name localhost;location /{root /data;index index.html index.htm index.php default.html default.htm default.php;}}
注释这个
#include /etc/nginx/conf.d/*.conf;
编译镜像时增加nginx.conf 和一个index.html文件
访问:http://192.168.1.181:8088/
自己编译nginx基础镜像
nginx官方 alpine Docker镜像
https://github.com/nginxinc/docker-nginx/blob/014e624239987a0a46bee5b44088a8c5150bf0bb/stable/alpine/Dockerfile
docker build -f Dockerfile3 -t alpinenginx3 .
docker run -d -p 8088:80 -p 444:443 --name="nginx" alpinenginx5 /data/apps/nginx-download/sbin/nginxFROM alpine:latestMAINTAINER liang "liang@gmail.com"ENV NGINX_VERSION_DATA 1.10.2 20220406ENV NGINX_VERSION 1.10.2RUN mkdir -p /data/apps/nginx-download && mkdir -p /data/logs/nginx-download && mkdir -p /data/temps/nginx-download && mkdir -p /data/temps/nginx-download/client_body_tempRUN GPG_KEYS=B0F4253373F8F6F510D42178520A9993A1C052F8 \&& CONFIG="\--prefix=/data/apps/nginx-download \--pid-path=/data/logs/nginx-download/nginx.pid \--lock-path=/data/apps/nginx-download/nginx.lock \--error-log-path=/data/logs/nginx-download/error.log \--http-log-path=/data/logs/nginx-download/access.log \--http-client-body-temp-path=/data/temps/nginx-download/client_body_temp \--http-proxy-temp-path=/data/temps/nginx-download/proxy_temp \--http-fastcgi-temp-path=/data/temps/nginx-download/fastcgi_temp \--http-uwsgi-temp-path=/data/temps/nginx-download/uwsgi_temp \--http-scgi-temp-path=/data/temps/nginx-download/scgi_temp \--user=nginx \--group=nginx \--with-http_stub_status_module \--with-http_realip_module \--with-http_ssl_module \" \&& addgroup -S nginx \&& adduser -D -S -h /var/cache/nginx -s /sbin/nologin -G nginx nginx \&& apk add --no-cache --virtual .build-deps gcc libc-dev make openssl-dev pcre-dev zlib-dev linux-headers curl gnupg libxslt-dev gd-dev geoip-dev perl-dev \&& curl -fSL http://nginx.org/download/nginx-$NGINX_VERSION.tar.gz -o nginx.tar.gz \&& curl -fSL http://nginx.org/download/nginx-$NGINX_VERSION.tar.gz.asc -o nginx.tar.gz.asc \&& export GNUPGHOME="$(mktemp -d)" \&& gpg --keyserver ha.pool.sks-keyservers.net --recv-keys "$GPG_KEYS" \&& gpg --batch --verify nginx.tar.gz.asc nginx.tar.gz \&& rm -r "$GNUPGHOME" nginx.tar.gz.asc \&& tar -zxC /data/apps/nginx-download -f nginx.tar.gz \&& rm nginx.tar.gz \&& cd /data/apps/nginx-download/nginx-$NGINX_VERSION \&& ./configure $CONFIG --with-debug \&& make -j$(getconf _NPROCESSORS_ONLN) \&& mv objs/nginx objs/nginx-debug \&& ./configure $CONFIG \&& make -j$(getconf _NPROCESSORS_ONLN) \&& make install \&& strip /data/apps/nginx-download/sbin/nginx* \&& apk del .build-deps gcc libc-dev make openssl-dev pcre-dev zlib-dev linux-headers curl \&& rm -rf /var/cache/apk/*EXPOSE 443 80docker build -f Dockerfile-base -t 192.168.1.182:5000/nginx-download-base .FROM 192.168.1.182:5000/nginx-download-baseMAINTAINER liang "liang@gmail.com"ADD /conf/nginx-debug.conf /data/apps/nginx-download/conf/nginx.conf
ADD /liang.crt /data/apps/nginx-download/liang.crt
ADD /liang.key /data/apps/nginx-download/liang.keyENTRYPOINT ["/data/apps/nginx-download/sbin/nginx"]docker build -f Dockerfile-debug -t 192.168.1.182:5000/nginx-download-debug .docker run -d -p 80:80 -p 443:443 --name="nginx-download-debug" -v `pwd`/logs:/data/logs/nginx-download 192.168.1.182:5000/nginx-download-debug:alpine相关文章:
docker Alpine一个只有5M小而美的Docker镜像
docker Alpine一个只有5M小而美的Docker镜像 参考链接: Alpine 一个只有5M的Docker镜像 http://www.infoq.com/cn/news/2016/01/Alpine-Linux-5M-Docker?utm_sourcetuicool&utm_mediumreferral 使用alpinelinux 构建 golang http 启动了才15mb http://blog.csdn.net/fre…...
Springboot扩展点之InstantiationAwareBeanPostProcessor
Springboot扩展点系列实现方式、工作原理集合:Springboot扩展点之ApplicationContextInitializerSpringboot扩展点之BeanFactoryPostProcessorSpringboot扩展点之BeanDefinitionRegistryPostProcessorSpringboot扩展点之BeanPostProcessorSpringboot扩展点之Instant…...
基于 U-Net 网络的遥感图像语义分割 完整代码+论文
一、研究目的U-Net 是一种由全卷积神经网络启发的对称结构网络,在医疗影像分割领域取得了很好的效果。 此次研究尝试使用 U-Net 网络在对多光谱遥感影像数据集上进行训练,尝试使用卷积神经网络自动分割出建筑,希望能够得到一种自动分割遥感影…...
Codeql 编译Shiro1.2.4爬坑
0x00 前言 这个Codeql一定要编译才能生成Database,是真的比较恼火,很多项目都不一定可以生成,环境就是一个非常大的坑,为了防止以后,所以将shiro1.2.4编译过程进行记录。 0x01 正文 首先是需要下载到shiro1.2.4的源…...
新C++(9):谈谈,翻转那些事儿
"相信羁绊,相信微光,相信一切无常。"一、AVL树翻转那些事儿(1)什么是AVL树?在计算机科学中,AVL树是最先发明的自平衡二叉查找树。在AVL树中任何节点的两个子树的高度最大差别为1,所以它也被称为高度平衡树。…...
Java深克隆的几种方式
目录 1、通过继承Cloneable接口,重写clone方法实现深克隆 2、通过序列化与反序列化的方式实现深克隆 3、第三方工具类实现深克隆,克隆对象需继承Serializable接口 3.1、Apache Commons Lang的SerializationUtils.clone方法 3.2、Gson工具类 3.3、F…...
PointNet++的源码运行
首先,从github上下载源码https://github.com/yanx27/Pointnet_Pointnet2_pytorch也可以从百度网盘下载链接:https://pan.baidu.com/s/1sgTYuqnBVC9p3bib450SOQ 提取码:gujd再下载对应的测试数据分类数据modelnet40_normal_resampled下载&…...
npm 上传自己的包
mkdir demo 创建一个新的文件夹 npm init 初始化项目 生成一个package.json文件 name version description等等touch index.js 创建一个node 可执行脚本新的js 文件 #!/usr/bin/env node // 必须在文件头加如上内容指定运行环境为node console.log(hello cli)在package.json 中…...
【Linux】常用命令大全(二)
目录 4. Linux常用命令 4.1 Linux命令初体验 4.2 文件目录操作命令 4.3 拷贝移动命令 4.4 打包压缩命令 4.5 文本编辑命令 4.6 查找命令 4. Linux常用命令 4.1 Linux命令初体验 4.1.1 常用命令演示 在这一部分中,我们主要介绍几个常用的命令,…...
第一章 操作系统概述
目录一、什么是操作系统?1、操作系统的概念2、计算系统的构成3、主要作用二、操作系统有哪些功能?1、操作系统的目标2、操作系统的功能三、操作系统有哪些特征?1、并发性2、共享性3、虚拟性4、异步性四、操作系统的运行机制是怎样的ÿ…...
ChatGPT为什么不受开发者喜欢?
记得 ChatGPT 最开始上线不久的时候,看到的大部分尝鲜和测试结果都是开发者在做进行敲代码测试,可以说职业危机感非常强的一群人了。 再者,加上 ChatGPT 要使用起来其实是有一些技术门槛的,愿意折腾的人也多是程序员,…...
Lua table
Table(表) table 是 lua 中唯一的数据结构,可以用于表示 数组,字典与结构体。它非常强大,可以储存任何数据类型。 table 的数据单元为一对键值。 table 是不固定大小的,你可以根据自己需要进行扩容。 构…...
JavaScript:使用for in不是一个很好的抉择
for in 如果让你遍历对象中的key和value,你第一个想到的一定是使用for in const o{name:"chengqige",age:23 } for (let key in o){console.log(key,o[key]); }看起来是没有问题的,但是如果我在下面加一行代码,输出的结果就可能让…...
Go语言学习小笔记(一)
Go语言学习小笔记(一) 入口 项目的主入口:一般在main.go 包导入 一个包定义一组编译过的代码,包的名字类似命名空间,可以用来间接访问包内声明的标识符 所有处于同一个文件夹中的代码文件,必须使用同一…...
前端Docker部署方案
一、Docker容器和镜像概念 首先明确镜像和容器的概念。我们可以用 docker 构建一个镜像,这个镜像可以导入导出,用于传输,重复利用。然后如果把他 run 起来,则称为一个容器。容器是运行时,会包括运行时上下文ÿ…...
Java——无重叠区间
题目链接 leetcode在线oj题——无重叠区间 题目描述 给定一个区间的集合 intervals ,其中 intervals[i] [starti, endi] 。返回 需要移除区间的最小数量,使剩余区间互不重叠 。 题目示例 输入: intervals [[1,2],[2,3],[3,4],[1,3]] 输出: 1 解释…...
数据库和数据表创建与管理操作
数据库和数据表创建与管理操作 MySQL中,一个完整的而数据存储过程主要分成4步: 创建数据库确认字段创建数据表插入数据 标识符命名规则 数据库名、表名不得超过30个字符,变量名限制为29个必须只能包含 A–Z, a–z, 0–9, _共63个字符数据…...
buu [ACTF新生赛2020]crypto-rsa3 1
题目描述: from flag import FLAG from Cryptodome.Util.number import * import gmpy2 import random e65537 p getPrime(512) q int(gmpy2.next_prime) n p*q m bytes_to_long(FLAG) c pow(m,e,n) print(n) print( c ) n 177606504836499246970959030226871…...
知识库:在医疗行业的知识管理有着怎样的意义与实际影响?
知识库中还可存在一个通常被称作典型方法库的特殊部分。如果对于某些问题的解决途径是肯定和必然的,就可以把其作为一部分相当肯定的问题解决途径直接存储在典型方法库中。这种宏观的存储将构成知识库的另一部分。在使用这部分时,机器推理将只限于选用典…...
带你一步步搭建Web自动化测试框架
测试框架的设计有两种思路,一种是自底向上,从脚本逐步演变完善成框架,这种适合新手了解框架的演变过程。另一种则是自顶向下,直接设计框架结构和选取各种问题的解决方案,这种适合有较多框架事件经验的人。本章和下一张…...
golang循环变量捕获问题
在 Go 语言中,当在循环中启动协程(goroutine)时,如果在协程闭包中直接引用循环变量,可能会遇到一个常见的陷阱 - 循环变量捕获问题。让我详细解释一下: 问题背景 看这个代码片段: fo…...
简易版抽奖活动的设计技术方案
1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...
以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:
一、属性动画概述NETX 作用:实现组件通用属性的渐变过渡效果,提升用户体验。支持属性:width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项: 布局类属性(如宽高)变化时&#…...
Ubuntu系统复制(U盘-电脑硬盘)
所需环境 电脑自带硬盘:1块 (1T) U盘1:Ubuntu系统引导盘(用于“U盘2”复制到“电脑自带硬盘”) U盘2:Ubuntu系统盘(1T,用于被复制) !!!建议“电脑…...
jdbc查询mysql数据库时,出现id顺序错误的情况
我在repository中的查询语句如下所示,即传入一个List<intager>的数据,返回这些id的问题列表。但是由于数据库查询时ID列表的顺序与预期不一致,会导致返回的id是从小到大排列的,但我不希望这样。 Query("SELECT NEW com…...
pgsql:还原数据库后出现重复序列导致“more than one owned sequence found“报错问题的解决
问题: pgsql数据库通过备份数据库文件进行还原时,如果表中有自增序列,还原后可能会出现重复的序列,此时若向表中插入新行时会出现“more than one owned sequence found”的报错提示。 点击菜单“其它”-》“序列”,…...
Python学习(8) ----- Python的类与对象
Python 中的类(Class)与对象(Object)是面向对象编程(OOP)的核心。我们可以通过“类是模板,对象是实例”来理解它们的关系。 🧱 一句话理解: 类就像“图纸”,对…...
boost::filesystem::path文件路径使用详解和示例
boost::filesystem::path 是 Boost 库中用于跨平台操作文件路径的类,封装了路径的拼接、分割、提取、判断等常用功能。下面是对它的使用详解,包括常用接口与完整示例。 1. 引入头文件与命名空间 #include <boost/filesystem.hpp> namespace fs b…...
C++中vector类型的介绍和使用
文章目录 一、vector 类型的简介1.1 基本介绍1.2 常见用法示例1.3 常见成员函数简表 二、vector 数据的插入2.1 push_back() —— 在尾部插入一个元素2.2 emplace_back() —— 在尾部“就地”构造对象2.3 insert() —— 在任意位置插入一个或多个元素2.4 emplace() —— 在任意…...
HTML中各种标签的作用
一、HTML文件主要标签结构及说明 1. <!DOCTYPE html> 作用:声明文档类型,告知浏览器这是 HTML5 文档。 必须:是。 2. <html lang“zh”>. </html> 作用:包裹整个网页内容,lang"z…...
