百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术分类 > 正文

「Docker类」 使用Dockerfile构建并部署nginx

ztj100 2025-02-06 17:13 18 浏览 0 评论

关键字:Dockerfile、构建nginx镜像、部署nginx

参考地址:无

这里仅讲解如何运用Dockerfile文件来定制一个nginx镜像,不介绍Dockerfile文内指令详解。

一、目录结构

目录介绍:

Dockerfile:Docker构建文件。

entrypoint.sh: nginx镜像启动文件,启动后pid为1。

html:代码存放目录。

nginx: logrotate的配置文件,用于日子切割。

nginx.conf: nginx配置文件,文中暂不介绍。

run.sh:打包执行脚本,也可不采用。

ssl:存放https证书。

二、Dockerfile脚本

FROM centos:7
LABEL maintainer opsmayi

RUN yum -y install wget && \
 ?  mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo_bak && \
 ?  wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo && \
 ?  yum makecache && \
 ?  yum install -y gcc gcc-c++ make \
 ?  openssl-devel pcre-devel gd-devel \
 ?  crontabs iproute net-tools telnet curl logrotate && \
 ?  yum clean all && \
 ?  rm -rf /var/cache/yum/* && \
 ?  ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
 ?  echo "00 ? ?  00 ? ?  * ? ? ? * ? ? ? * ? ? ? logrotate -f /etc/logrotate.d/nginx" >> /var/spool/cron/root && \
 ?  groupadd nginx && useradd -g nginx nginx
 ? ?
COPY nginx /etc/logrotate.d/
COPY nginx-1.18.0.tar.gz /

RUN tar zxf nginx-1.18.0.tar.gz && \
 ?  cd nginx-1.18.0 && \
 ?  ./configure --prefix=/usr/local/nginx \
 ?  --with-http_ssl_module \
 ?  --with-http_stub_status_module && \
 ?  make -j 4 && make install && \
 ?  rm -rf /usr/local/nginx/html/* && \
 ?  rm -rf /nginx* && \ 
 ?  rm -f /usr/local/nginx/conf/nginx.conf && \ 
 ?  mkdir -p /var/log/nginx && \
 ?  chmod 444 /etc/logrotate.d/nginx
 ? ?
COPY html /usr/local/nginx/html
COPY nginx.conf /usr/local/nginx/conf/nginx.conf
COPY entrypoint.sh /entrypoint
COPY ssl /usr/local/nginx/conf/ssl

RUN chown -R nginx:nginx /usr/local/nginx/html/ && \
 ?  touch /var/log/nginx/access.log && \
 ?  chmod +x /entrypoint

ENV PATH $PATH:/usr/local/nginx/sbin
WORKDIR /usr/local/nginx

ENTRYPOINT ["/entrypoint"]

Dockerfile指令:

FROM:指定基础镜像

LABEL:标记镜像作者

RUN:用于在镜像容器中执行命令

COPY: 复制指令:从上下文目录中复制文件或者目录到容器里指定路径

ADD:ADD指令和COPY指令一致,优缺点可以直接百度,此处不做详细解释。

ENV:设置环境变量,定义了环境比那里,那么在后续的指令中,就可以使用这个环境变量。

WORKDIR:指定工作目录,用 WORKDIR 指定的工作目录,会在构建镜像的每一层中都存在(WORKDIR 指定的工作目录,必须提前创建好)。

ENTRYPOINT:类似于 CMD 指令,但其不会被 docker run 的命令行参数指定的指令所覆盖,而且这些命令行参数会被当作参数送给 ENTRYPOINT 指令指定的程序。但是, 如果运行 docker run 时使用了 --entrypoint 选项,将覆盖 CMD 指令指定的程序。优点:在执行 docker run 的时候可以指定 ENTRYPOINT 运行所需的参数。注意:如果 Dockerfile 中如果存在多个 ENTRYPOINT 指令,仅最后一个生效。

CMD:类似于 RUN 指令,用于运行程序,但二者运行的时间点不同。

详细指令说明可参考菜鸟教程。

三、脚本entrypoint.sh

脚本包含nginx启动、启动crond、打印nginx日志,脚本可根据自身需求调整。

脚本优势:

1、logrotate将nginx日志切割,保留最近时间的日志。

2、使用docker logs 命令直接看到nginx日志,不需要进入容器。

四、脚本run.sh[可忽略]

#!/bin/bash
docker stop nginx
docker rm nginx
docker build -t nginx:latest .
docker run -d --name nginx -p 80:80 -p 443:443 nginx:latest

注:该脚本只为方便随时修改后再进行Docker部署。

五、打包部署命令

#打包命令,镜像第一次构建耗时稍长。
[root@mayi nginx]# docker build -t nginx:latest .
#部署命令
[root@mayi nginx]# docker run -d --name nginx -p 80:80 -p 443:443 nginx:latest


源码链接:
https://pan.baidu.com/s/1eYpy5cEHPvMLiqHGn9sgsA

提取码:phk6


注:本文章只用于技术记录,不喜勿喷!感谢!

相关推荐

其实TensorFlow真的很水无非就这30篇熬夜练

好的!以下是TensorFlow需要掌握的核心内容,用列表形式呈现,简洁清晰(含表情符号,<300字):1.基础概念与环境TensorFlow架构(计算图、会话->EagerE...

交叉验证和超参数调整:如何优化你的机器学习模型

准确预测Fitbit的睡眠得分在本文的前两部分中,我获取了Fitbit的睡眠数据并对其进行预处理,将这些数据分为训练集、验证集和测试集,除此之外,我还训练了三种不同的机器学习模型并比较了它们的性能。在...

机器学习交叉验证全指南:原理、类型与实战技巧

机器学习模型常常需要大量数据,但它们如何与实时新数据协同工作也同样关键。交叉验证是一种通过将数据集分成若干部分、在部分数据上训练模型、在其余数据上测试模型的方法,用来检验模型的表现。这有助于发现过拟合...

深度学习中的类别激活热图可视化

作者:ValentinaAlto编译:ronghuaiyang导读使用Keras实现图像分类中的激活热图的可视化,帮助更有针对性...

超强,必会的机器学习评估指标

大侠幸会,在下全网同名[算法金]0基础转AI上岸,多个算法赛Top[日更万日,让更多人享受智能乐趣]构建机器学习模型的关键步骤是检查其性能,这是通过使用验证指标来完成的。选择正确的验证指...

机器学习入门教程-第六课:监督学习与非监督学习

1.回顾与引入上节课我们谈到了机器学习的一些实战技巧,比如如何处理数据、选择模型以及调整参数。今天,我们将更深入地探讨机器学习的两大类:监督学习和非监督学习。2.监督学习监督学习就像是有老师的教学...

Python教程(三十八):机器学习基础

...

Python 模型部署不用愁!容器化实战,5 分钟搞定环境配置

你是不是也遇到过这种糟心事:花了好几天训练出的Python模型,在自己电脑上跑得顺顺当当,一放到服务器就各种报错。要么是Python版本不对,要么是依赖库冲突,折腾半天还是用不了。别再喊“我...

超全面讲透一个算法模型,高斯核!!

...

神经网络与传统统计方法的简单对比

传统的统计方法如...

AI 基础知识从0.1到0.2——用“房价预测”入门机器学习全流程

...

自回归滞后模型进行多变量时间序列预测

下图显示了关于不同类型葡萄酒销量的月度多元时间序列。每种葡萄酒类型都是时间序列中的一个变量。假设要预测其中一个变量。比如,sparklingwine。如何建立一个模型来进行预测呢?一种常见的方...

苹果AI策略:慢哲学——科技行业的“长期主义”试金石

苹果AI策略的深度原创分析,结合技术伦理、商业逻辑与行业博弈,揭示其“慢哲学”背后的战略智慧:一、反常之举:AI狂潮中的“逆行者”当科技巨头深陷AI军备竞赛,苹果的克制显得格格不入:功能延期:App...

时间序列预测全攻略,6大模型代码实操

如果你对数据分析感兴趣,希望学习更多的方法论,希望听听经验分享,欢迎移步宝藏公众号...

AI 基础知识从 0.4 到 0.5—— 计算机视觉之光 CNN

...

取消回复欢迎 发表评论: