Docker 使用官方镜像构建 nginx 容器

前言

  • 需要自己编译nginx容器看我另外一篇文章

编译 Nginx

特性:
1) 默认调优好 Nginx 配置
2) 默认添加虚拟配置,宿主机ip访问即可
3) 使用官方 nginx alpine 镜像安装
4) 新增 logrotate 将 nginx 日志按日期切割
5) 定义Nginx日志默认 JSON 输出,方便 ELK
目录说明:
1) Nginx项目路径 /data/wwwroot
2) Nginx日志路径 /data/wwwlogs
3) Nginx虚拟路径 /etc/nginx/conf.d
4) Nginx重写路径 /etc/nginx/conf.d/rewrite

1、使用方法

git clone https://github.com/G-Akiraka/DockerFile-Nginx.git && cd DockerFile-Nginx

2、开始构建 Docker Nginx 镜像

docker build -f nginx_1.17.8-alpine.yml -t nginx:1.17.8 .

3、运行 Nginx 容器

docker run -d -p 80:80 nginx:1.17.8

4、查看 Nginx 容器是否运行

docker ps
# 调试容器,如果需要的话
docker run -it nginx:1.17.8 sh

5、通过浏览器访问,默认可通过宿主机 ip 访问

通过 Dokcer compose 运行容器

# 启动并构建Nginx容器
sudo docker-compose up -d build

DockerFile 源码

# 从官方基础版本构建
FROM nginx:1.17.8-alpine

# 设置容器中文,否则中文乱码
ENV LANG C.UTF-8
#   设置时区
ENV TZ Asia/Shanghai

# 使用阿里源与设置时间
RUN sed -i s@/dl-cdn.alpinelinux.org/@/mirrors.aliyun.com/@g /etc/apk/repositories \
    && ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo '$TZ' > /etc/timezone \
    #   更新系统\安装依赖包
    && apk update \
    && apk add fontconfig tzdata logrotate rsyslog \
    && rm -rf /tmp/* /var/cache/apk/*

# 添加 Nginx 启动脚本
ADD script/aka_nginx.sh /root
ADD config/logrotate-nginx /etc/logrotate.d/nginx
RUN chmod +x /root/aka_nginx.sh \
    && mkdir -p /data/wwwlogs \
# 添加定时任务,切割 nginx 日志
    && echo "1 0 * * * /usr/sbin/logrotate -f /etc/logrotate.d/nginx >/dev/null 2>&1" >> /var/spool/cron/crontabs/root

# 拷贝 Nginx 配置文件
ADD conf /etc/nginx

# 启动 nginx 服务
CMD "/root/aka_nginx.sh"

版权声明:
作者:Akiraka
链接:https://www.akiraka.net/linux/248.html
来源:Akiraka
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
海报
Docker 使用官方镜像构建 nginx 容器
前言 需要自己编译nginx容器看我另外一篇文章 编译 Nginx 特性: 1) 默认调优好 Nginx 配置 2) 默认添加虚拟配置,宿主机ip访问即可 3) 使用官方 nginx alp……
<<上一篇
下一篇>>
文章目录
关闭
目 录