基于CentOS-7.2.15的Mono+jexus镜像
公司开发及测试的linux环境为CentOS-7.X,因此以CentOS-7.2.15作为基础镜像,镜像尺寸确实比较大,最终Mono-4.6.0.125+Jexus-5.8.1.10镜像尺寸已将近1G(900+M);
Mono镜像
Mono镜像制作基本按照手动安装Mono的步骤即可,但需要注意以下4点:
1)除mono依赖的各种组件需要安装外,还需要安装wget及bzip2两个组件,前者用于下载源码,后者用于解压mono源码,因为mono源码用bz2压缩;
2)安装openssh,openssh-server两个组件,用于以守护进程启动镜像;
3)mono及libgdiplus源码的下载,解压,安装,删除,必须在Dockerfile的一条RUN中进行,原因是基于Docker的分层镜像压缩原理,如果将这几个步骤分别压缩至不同的docker层,则最终镜像将包含每一条RUN中的状态,也就是说,镜像中将包含下载的压缩包,解压后的文件夹,但是在最终层,这些文件却不可见-被压缩在中间层中。
4)将mono的bin路径加入环境变量。
以下是mono-4.6.0.125镜像的Dockerfile:
FROM centos:7.2.1511 MAINTAINER JiaKai "jiakai@gridsum.com" COPY CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo RUN yum update -y -q && yum -y install gcc gcc-c++ bison pkgconfig glib2-devel gettext make libpng-devel libjpeg-devel libtiff-devel libexif-devel giflib-devel libX11-devel freetype-devel fontconfig-devel cairo-devel wget bzip2 openssh openssh-server.x86_64 && rm -rf /var/cache/yum RUN wget http://download.mono-project.com/sources/libgdiplus/libgdiplus-4.2.tar.gz \ && tar zxf libgdiplus-4.2.tar.gz \ && cd libgdiplus-4.2 && ./configure --prefix=/usr/mono/ && make && make install \ && rm -rf /libgdiplus-4.2/ && rm -rf /libgdiplus-4.2.tar.gz \ && echo "/usr/mono/lib" > /etc/ld.so.conf.d/mono.conf RUN wget http://download.mono-project.com/sources/mono/mono-4.6.0.125.tar.bz2 \ && tar xjf mono-4.6.0.125.tar.bz2 \ && cd mono-4.6.0 && ./configure --prefix=/usr/mono/ && make -j2 && make install \ && rm -rf /mono-4.6.0/ && rm -rf /mono-4.6.0.125.tar.bz2 \ && echo "export PATH=$PATH:/usr/mono/bin">>/etc/profile ENV PATH $PATH:/usr/mono/bin
这里是完成后的Mono-4.6.0.125镜像公开地址
Jexus镜像
先以之下的脚本创建Jexus镜像(基于mono镜像):
FROM jiakai/mono-4.6.0.125:1.0.17 MAINTAINER JiaKai "jiakai@gridsum.com" COPY ./jexus-5.8.1/ /jexus RUN /jexus/install \ && sed -i "s;^root=/ /var/www/default;root=/ /data;" /usr/jexus/siteconf/default \ && rm -rf /jexus/ \ && mkdir /data && chmod a+rwx /data EXPOSE 80 8080
有以下一些问题需要注意:
1)jexus-5.8.1文件夹包含预先下载的jexus安装包解压后的所有内容,拷贝至镜像中/jexus目录;
2)安装jexus镜像后将默认站点的启动目录改为镜像中的/data目录;
镜像制作完毕后,如果需要以守护进程启动镜像,即以/usr/sbin/sshd -D的方式启动镜像,则缺少4个ssh私钥文件;
一个解决方法是, docker run 这个镜像,手动创建这4个私钥文件后保存该容器为新的镜像:
ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key
退出镜像后,commit该容器即可:
sudo docker commit xxx容器IDxxx XXXXX:vvvvv
最终得到Mono-Jexus基础镜像。
这里是完成后的Jexus-5.8.1.10镜像公开地址
基于CentOS-7.2.15的Mono+jexus镜像的更多相关文章
- 配置 ASP.NET Linux( CentOS 6.5 ) 运行环境 MONO + Jexus
1.更新系统 在命令行下执行 yum –y update 2.安装必要的软件 yum -y install gcc gcc-c++ bison pkgconfig glib2-devel gettex ...
- CentOS 6.3下 安装 Mono 3.2 和Jexus 5.4
最新更新参看: Centos 7.0 安装Mono 3.4 和 Jexus 5.6 2012年初写过一篇<32和64位的CentOS 6.0下 安装 Mono 2.10.8 和Jexus 5.0 ...
- ASP.NET Linux部署(2) - MS Owin + WebApi + Mono + Jexus
ASP.NET Linux部署(2) - MS Owin + WebApi + Mono + Jexus 本文承接我的上一篇博文: ASP.NET 5 Linux部署,那篇文章主要是针对最新的ASP. ...
- 基于CentOS与VmwareStation10搭建Oracle11G RAC 64集群环境:4.安装Oracle RAC FAQ-4.5.安装Grid,创建ASM磁盘组空间不足
因之前分区时,分区的Last cylinder的值选了“1”,导致创建磁盘组空间不足.解决办法是先删除分区,重新创建分区并删除ASM磁盘,然后重建ASM磁盘 1. 先删除分区,重新创建分区: 1)查询 ...
- 基于CentOS与VmwareStation10搭建Oracle11G RAC 64集群环境
1.资源准备 最近,在VmwareStation 10虚拟机上,基于CentOS5.4安装Oracle 11g RAC,并把过程记录下来.刚开始时,是基于CentOS 6.4安装Oracle 11g ...
- Cacti监控服务器配置教程(基于CentOS+Nginx+MySQL+PHP环境搭建)
Cacti监控服务器配置教程(基于CentOS+Nginx+MySQL+PHP环境搭建) 具体案例:局域网内有两台主机,一台Linux.一台Windows,现在需要配置一台Cacti监控服务器对这两台 ...
- (转)基于CentOS 7安装Zabbix 3.4和Zabbix4.0
原文:https://blog.csdn.net/leshami/article/details/78708049 CentOS 7环境下Zabbix4.0的安装和配置实例-----------htt ...
- 基于CentOS与VmwareStation10搭建hadoop环境
基于CentOS与VmwareStation10搭建hadoop环境 目 录 1. 概述.... 1 1.1. 软件准备.... 1 1.2. 硬件准备.... 1 2. 安装与配置虚拟机.. ...
- 基于CentOS与VmwareStation10搭建Oracle11G RAC 64集群环境:3.安装Oracle RAC-3.2.安装 cvuqdisk 软件包
3.2.安装 cvuqdisk 软件包 3.2.1. 准备Oracle Grid安装包 上传Grid .Oracle 安装文件: sftp> put E:\Software\linux.x64 ...
随机推荐
- (六)Maven之pom.xml文件简单说明
通过前面几部分知识,我们对maven已经有了初步的印象,就像Make的Makefile.Ant的build.xml一样,Maven项目的核心是pom.xml.POM(Project Object Mo ...
- BitSet构造函数的两种特例
C++11之后,bitset的构造函数新加了两种形式: bitset<bits>::bitset (const string& str, string::size_type str ...
- JavaScript Array和string的转换
Array类可以如下定义: var aValues = new Array(); 如果预先知道数组的长度,可以用参数传递长度 var aValues = new Array(20); -------- ...
- -bash: ulimit: pipe size: cannot modify limit: Invalid argument
从root账号切换到oracle账号时,出现了"-bash: ulimit: pipe size: cannot modify limit: Invalid argument"提示 ...
- SQL SERVER 临时表导致存储过程重编译(recompile)的一些探讨
SQLSERVER为了确保返回正确的值,或者处于性能上的顾虑,有意不重用缓存在内存里的执行计划,而重新编译执行计划的这种行为,被称为重编译(recompile).那么引发存储过程重编译的条件有哪一些呢 ...
- SQLServer 日期函数大全
一.统计语句 1.--统计当前[>当天00点以后的数据] ) ) ORDER BY dateandtime DESC 2.--统计本周 3.--统计本月 4.统计当前 SELECT * FROM ...
- java中Class对象详解和类名.class, class.forName(), getClass()区别
一直在想.class和.getClass()的区别,思索良久,有点思绪,然后有网上搜了搜,找到了如下的一篇文章,与大家分享. 原来为就是涉及到Java的反射----- Java反射学习 所谓反射,可以 ...
- 让那些为Webkit优化的网站也能适配IE10
特别声明:此篇文章由David根据Charles Morris的英文文章原名<Adapting your WebKit-optimized site for Internet Explorer ...
- ZBrush中的动态网格该怎么进行运用
DynaMesh是ZBrush最新的基础模型创建工具,该命令用于基本模型的起稿到中模的制作.使用DynaMesh完全不启用考虑模型的拓扑,可以从一个图形拉扯出整个模型的分支,本文将以一个实例简单介绍Z ...
- KVO设计模式
一,概述 KVO,即:Key-Value Observing,它提供一种机制,当指定的对象的属性被修改后,则对象就会接受到通知.简单的说就是每次指定的被观察的对象的属性被修改后,KVO就会自动通知相应 ...