美文网首页
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