美文网首页
Nginx官方镜像私有化定制,实现时区同步及自动挂载配置文件到宿

Nginx官方镜像私有化定制,实现时区同步及自动挂载配置文件到宿

作者: 沉思的雨季 | 来源:发表于2020-06-08 14:51 被阅读0次

    一、为什么要构建Nginx私有镜像?

    1.官方镜像的系统时间是UTC(协调世界时),而我们常用的是CST(北京时间)。

    2.官方镜像挂载配置文件到宿主机时,需要手动拷贝配置文件,否则无法正常启动。

    二、镜像修改过程:

    1、增加自定义shell文件wrapper.sh,实现配置文件拷贝。
    脚本如下:

    #!/bin/sh
    # Generate copy host mount files for the first time
    if [[ ! -e /custom/conf/nginx.conf ]]; then
        echo "Copy config file (nginx.conf)..."
        cp -f /etc/nginx/nginx.conf /custom/conf/nginx.conf
        chmod 0600 /custom/conf/nginx.conf
    else
        cp -f /custom/conf/nginx.conf /etc/nginx/nginx.conf
    fi
    
    if [[ ! -e /custom/conf/default.conf ]]; then
        echo "Copy config file (default.conf)..."
        cp -f /etc/nginx/conf.d/default.conf /custom/conf/default.conf
        chmod 0600 /custom/conf/default.conf
    else
        cp -f /custom/conf/default.conf /etc/nginx/conf.d/default.conf
    fi
    

    2、增加Nginx服务自定义启动脚本start-nginx.sh,实现Nginx服务启动。
    脚本如下:

    #!/bin/sh
    
    #执行初始化配置
    echo "daemon off;" >> /etc/nginx/nginx.conf
    source /usr/local/bin/wrapper.sh
    
    #启动Nginx服务
    nginx
    

    3、增加dockerfile文件,实现Nginx官方镜像自定义。
    脚本如下:

    #使用docker nginx:1.16-alpine镜像
    FROM nginx:1.16-alpine
    
    #作者信息
    MAINTAINER cuishanwei <kavin>
    LABEL Description="This image is used to serve TPRI-AQSC project"  Version="1.0"
    
    #定义环境变量
    ENV  TIME_ZONE Asia/Shanghai
    
    #Alpine目录并无timezone及locatime配置,所以需要先安装
    #dockerfile增加命令
    RUN \
    #安装tzdata安装包
    apk add --no-cache tzdata \
    #设置时区
    && echo "${TIME_ZONE}" > /etc/timezone \ 
    && ln -sf /usr/share/zoneinfo/${TIME_ZONE} /etc/localtime  
    
    #copy files
    COPY wrapper.sh /usr/local/bin/
    COPY start-nginx.sh /usr/local/bin/
    RUN chmod 777 /usr/local/bin/*
    
    # Define data volumes
    VOLUME ["/custom/conf"]
    
    #工作区域
    WORKDIR /var/log/nginx
    
    #暴露端口
    EXPOSE 80
    
    #启动时运行tomcat
    CMD ["start-nginx.sh", "run"]
    

    4、生成自定义docker镜像nginx-alpine:1.16。

    命令行执行:

    docker build -t nginx-alpine:1.16 . -f dockerfile
    

    相关文章

      网友评论

          本文标题:Nginx官方镜像私有化定制,实现时区同步及自动挂载配置文件到宿

          本文链接:https://www.haomeiwen.com/subject/crpazhtx.html