• 基于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镜像公开地址

  • 相关阅读:
    文件处理(记录经典代码及相关逻辑)
    python与pip在widow下cmd命令行操作问题收集:python、pip不是内部或外部命令,也不是可运行程序
    python—函数中存在的部分问题
    python —匿名函数(lambda)
    Python—递归函数
    python-函数参数
    python代码运行过程
    String类练习
    String类的常用方法
    死锁与进程通信
  • 原文地址:https://www.cnblogs.com/you-you-111/p/5961234.html
Copyright © 2020-2023  润新知