Dockerfile实战-Nginx

it2024-08-20  43

文章目录

构建Nginx镜像

1.Nginx安装步骤

2.Dockerfile文件编写

3.注意事项及dockerfile编写最佳实践

a、尽量让镜像文件更小

b、尽量减少Dockerfile指令

c、在测试中编写Dockerfile

d、Dockerfile常用指令

4.构建基础镜像(nginx) 

5.以数据卷挂载方式启动nginx容器

a.创建本地目录,用于存放Nginx的相关文件信息

b.查看nginx-web运行容器信息

c.测试访问


构建Nginx镜像

1.Nginx安装步骤

安装依赖包编译安装nginx三步骤:编译、make、make install配置配置文件和环境变量

2.Dockerfile文件编写

[root@web build_dockerfile]# more dockerfile-nginx FROM centos:1.0 MAINTAINER Bertrm<bertram.521@qq.com> RUN mkdir -p /usr/local/nginx/conf/vhost RUN yum -y install readline-devel pcre-devel openssl-devel gcc \ telnet wget curl make && \ yum clean all RUN wget http://nginx.org/download/nginx-1.14.2.tar.gz && \ tar zxf nginx-1.14.2.tar.gz && \ cd nginx-1.14.2 && \ ./configure --prefix=/usr/local/nginx \ --with-http_ssl_module \ --with-http_stub_status_module && \ make -j 1 && make install && \ rm -rf /usr/local/nginx/html/* && \ echo "ok" >> /usr/local/nginx/html/status.html && \ cd / && rm -rf nginx-1.14.2* && \ ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime ENV PATH $PATH:/usr/local/nginx/sbin COPY nginx.conf /usr/local/nginx/conf/nginx.conf WORKDIR /usr/local/nginx EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]

3.注意事项及dockerfile编写最佳实践

a、尽量让镜像文件更小

清理残留文件,比如build完成后,要删掉源码包、yum缓存等。

b、尽量减少Dockerfile指令

因为我们知道,一个Dockerfile指令,就是一层镜像,我们使用shell里面的&&符号进行拼接成一行,让RUN指令尽可能少。

c、在测试中编写Dockerfile

我们随便启动一个容器:docker run -it  centos,进入容器后,就可以对我们写的Dockerfile指令进行逐行执行

d、Dockerfile常用指令

基本上按照表格中的顺序进行编写

4.构建基础镜像(nginx) 

[root@web build_dockerfile]# docker build -f dockerfile-nginx -t nginx:1.0 .

注意:命令最后面一个点,用于指定docker build的上下文,.为当前目录,就是在build镜像时,如果有涉及到需要拷贝文件之类的,都是从当前目录拷贝。

如上图可以看出,构建成功。

5.以数据卷挂载方式启动nginx容器

a.创建本地目录,用于存放Nginx的相关文件信息

mkdir -p /data/nginx/www /data/nginx/logs /data/nginx/conf 其中: www: 目录将映射为 nginx 容器配置的虚拟目录。 logs: 目录将映射为 nginx 容器的日志目录。 conf: 目录里的配置文件将映射为 nginx 容器的配置文件。

[root@web build_dockerfile]# docker run -d -p 8818:80 --name nginx-web \ -v /data/nginx/www:/usr/local/nginx/html \ -v /data/nginx/conf/vhost:/usr/local/nginx/conf/vhost \ nginx:1.0 其中,相关命令行参数的含义。 --rm:容器终止运行后,自动删除容器文件;(这里没有使用) --name nginx-web:容器的名字叫做nginx-web,名字自行定义; -p: 端口进行映射,将本地 8818 端口映射到容器内部的 80 端口; -d:容器启动后,在后台运行 -v /data/nginx/www:/usr/local/nginx/html :将本地/data/nginx/www目录挂载到容器/usr/local/nginx/html目录上 -v /data/nginx/conf/vhost:/usr/local/nginx/conf/vhost :将本地/data/nginx/conf/vhost目录挂载到容器/usr/local/nginx/conf/vhost目录上

这里日志没做挂载,自行操作!

b.查看nginx-web运行容器信息

c.测试访问

 在浏览器中打开http://IP:端口,效果如下

 我们可以进入到虚拟目录下(/data/nginx/www/)做重新修改index.html文件,查看访问是否会发生变化!如果在访问时出现403错误,应该是index.html文件权限不足,给成644就行。

index.html内容如下

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Nginx test !!!</title> </head> <body> <h1>座右铭</h1> <p>机会远比安稳重要,事业远比金钱重要,未来远比今天重要。</p> </body> </html>

实践是OK的,一切都是期望的样子!

 

最新回复(0)