网站首页 > 技术文章 正文
关键字: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
注:本文章只用于技术记录,不喜勿喷!感谢!
猜你喜欢
- 2024-09-30 Docker 备忘录 - 07. 常用容器部署实例
- 2024-09-30 第 8 章:NGINX 和 Docker docker nginx keepalived
- 2024-09-30 docker 基础安装部署 docker安装与使用
- 2024-09-30 Docker安装和配置Nginx docker 安装 nginx
- 2024-09-30 用docker和nginx部署前端项目,并且访问本地java网关gateway服务
- 2024-09-30 Docker部署WordPress LNMP环境实践
- 2024-09-30 Docker安装部署ElasticSearch docker-compose安装es
- 2024-09-30 Docker部署web服务器之Nginx篇(一)
- 2024-09-30 Docker 循序渐进之实例部署 docker completion
- 2024-09-30 使用容器工具docker进行nginx服务安装
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)