(十二)Dockerfile实战-Nginx

文章目录

构建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安装步骤

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

2.Dockerfile文件编写

[root@web build_dockerfile]# more dockerfile-nginx 
FROM centos:1.0
MAINTAINER Bertrm

RUN useradd -M -s /sbin/nologin nginx
RUN mkdir -p /usr/local/nginx/conf/vhost
RUN mkdir -p /data/logs/nginx
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 /usr/local/nginx/sbin:$PATH
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常用指令

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

(十二)Dockerfile实战-Nginx_第1张图片

4.构建基础镜像(nginx) 

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

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

(十二)Dockerfile实战-Nginx_第2张图片

(十二)Dockerfile实战-Nginx_第3张图片如上图可以看出,构建成功。

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目录上

日志及配置文件挂载启动 

docker run -d --name nginx03 -p 83:80 -v /data/nginx/conf/nginx.conf:/usr/local/nginx/conf/nginx.conf -v /data/nginx/conf/vhost/:/usr/local/nginx/conf/vhost/ -v /data/nginx/logs/:/data/logs/ nginx:v1

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

c.测试访问

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

(十二)Dockerfile实战-Nginx_第4张图片

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

index.html内容如下





Nginx test !!!


    

座右铭

机会远比安稳重要,事业远比金钱重要,未来远比今天重要。

(十二)Dockerfile实战-Nginx_第5张图片

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

你可能感兴趣的:(Docker,docker)