Dockerfile, nginx.conf文件解读

Dockerfile文件

FROM registry.tongdun.me/library/alpine3-nginx:1.0
ENV APPNAME=edith-frontend

ADD nginx.conf /etc/nginx/
ADD ok.htm /home/admin/
RUN mkdir /home/admin/dist
COPY /dist/ /home/admin/dist/
RUN mkdir /home/admin/nginx
RUN mkdir /home/admin/nginx/conf
RUN mkdir /home/admin/$APPNAME
ADD validate.sh /home/admin/$APPNAME
RUN mkdir /home/admin/output
RUN mkdir /home/admin/output/$APPNAME
RUN mkdir /home/admin/output/$APPNAME/logs

CMD ["/bin/bash", "-c", "nginx"]

文件解读

# FROM:用来制定基础镜像的关键字。
# ENV: 指令用于设置环境变量
# ADD:向镜像中添加文件或目录
# RUN: 在构建镜像过程中执行命令
# COPY: 可以将本地文件或目录复制到镜像中,使得容器在运行时可以直接使用这些文件。
# CMD:容器启动

# 这条指令告诉Docker在构建镜像时,使用名为:alpine3-nginx:1.0的基础镜像。
FROM registry.tongdun.me/library/alpine3-nginx:1.0

# 设置一个名为 "APPNAME" 的环境变量,其值为 "edith-frontend"。通过这个指令,可以在 Docker 容器内部使用 "$APPNAME" 来引用这个环境变量的取值。
ENV APPNAME=edith-frontend

# 将名为 "nginx.conf" 的文件添加到 Docker 镜像中的 "/etc/nginx/" 目录下。这样做可以将本地的 nginx 配置文件复制到镜像中指定的位置,以便在容器启动时使用该配置文件。
ADD nginx.conf /etc/nginx/
ADD ok.htm /home/admin/

# 表示在 Docker 镜像中执行命令,创建一个名为 "dist" 的目录,并将其放置在 "/home/admin/" 目录下。这个命令会在构建 Docker 镜像时执行,确保镜像中包含指定的目录结构。
RUN mkdir /home/admin/dist

# 表示将本地的 "dist" 目录中的内容复制到 Docker 镜像中的 "/home/admin/dist/" 目录下。这样做可以将本地构建好的静态文件或应用程序文件复制到镜像中,以便在容器启动时使用。
COPY /dist/ /home/admin/dist/

RUN mkdir /home/admin/nginx
RUN mkdir /home/admin/nginx/conf
RUN mkdir /home/admin/$APPNAME
RUN mkdir /home/admin/output
RUN mkdir /home/admin/output/$APPNAME
RUN mkdir /home/admin/output/$APPNAME/logs

# 启动nginx
CMD ["/bin/bash", "-c", "nginx"]

nginx.conf

user  root;
worker_processes  4;

error_log  /home/admin/output/edith-frontend/logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

pid        /home/admin/output/edith-frontend/logs/nginx.pid;

events {
    worker_connections  1024;
}
daemon          off;


http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /home/admin/output/edith-frontend/logs/access.log;
    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    client_max_body_size 1900M;
    client_body_buffer_size 128k;

    #gzip  on;
    gzip  on;
    gzip_min_length 5k;
    gzip_buffers 4 16k;
    gzip_http_version 1.0;
    gzip_comp_level 3;
    gzip_types text/plain application/javascript application/css  text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
    gzip_vary on;
    gzip_disable "MSIE [1-6]\.";

    # 在configMap 里面配置 对应的服务器IP
    include /home/admin/nginx/conf/*.conf;

    server {
        # 静态资源根路径变量
        set $root /home/admin;
        listen 8088;
        server_name localhost;
        charset utf-8;
        # 静态资源根路径,(后面相关前端静态资源都放单该路径下)
        root /home/admin;
        location / {
          root /home/admin/dist;
          index index.html;
          try_files $uri /index.html;
        }
        location /api {
          proxy_pass http://backend;
        }
        # location ^~ /bridgeApi {
        #   proxy_set_header X-Forwarded-For $remote_addr;
        #   proxy_pass http://bifrostApi/api;
        # }
        client_max_body_size 4096M;
        client_header_timeout 900s;
        client_body_timeout 900s;
        proxy_connect_timeout 900s;
        proxy_send_timeout 900s;
        proxy_read_timeout 900s;
        keepalive_timeout  900s;
    }
}


nginx.conf解读

# 将用户设置为 root
user  root;

# Nginx 启动时的 worker 进程数量
worker_processes  4;

# 记录错误日志的路径和文件名
error_log  /home/admin/output/edith-frontend/logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;


# 将 Nginx 主进程的 PID 写入到指定路径下的 nginx.pid 文件中。
pid        /home/admin/output/edith-frontend/logs/nginx.pid;

# nginx的事件模块
events {
    # 每个 worker 进程允许的最大并发连接数为 1024。
    worker_connections  1024;
}

# "daemon off;",可以让 Nginx 在前台运行,方便查看实时日志和处理错误信息,
# 适用于一些特殊的调试和测试场景。
daemon          off;

# 用来配置 HTTP 服务器的主要部分。在这个模块中,你可以配置nginx处理http请求的各种参数,包括虚拟机,路由,缓存,日志记录等等。
# server:定义http服务器的虚拟主机,包括监听的端口,域名和请求的处理规则。
# location: 定义url路由的匹配规则和对应的处理方式。
# upstream:定义后端服务器的集群,用于负载均衡和反向代理。
# log_format:定义访问日志的格式。
# access_log/error_log:配置访问日志和错误日志的记录方式。

http {

    # includes 引入额外的配置文件
    include       mime.types;

    # default_type: 用于设置默认的 MIME 类型
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /home/admin/output/edith-frontend/logs/access.log;
    
    # 在 Nginx 配置中,"sendfile on" 是用来开启或关闭文件传输优化的指令。
    # 当设置为 "on" 时,Nginx 在合适的情况下将使用操作系统提供的高效文件传输机制来直接传输文件,
    # 而不是将文件内容拷贝到用户空间再传输。这样可以提高文件传输的效率和性能。
	sendfile        on;
    
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    client_max_body_size 1900M;
    client_body_buffer_size 128k;

    #gzip  on;
    gzip  on;
    gzip_min_length 5k;
    gzip_buffers 4 16k;
    gzip_http_version 1.0;
    gzip_comp_level 3;
    gzip_types text/plain application/javascript application/css  text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
    gzip_vary on;
    gzip_disable "MSIE [1-6]\.";

    # 在configMap 里面配置 对应的服务器IP
    include /home/admin/nginx/conf/*.conf;

    server {
        # 静态资源根路径变量
        # 将$root 的变量设置为 /home/admin
        set $root /home/admin;
        listen 8088;
        
        # 域名
        server_name localhost;
        charset utf-8;
        # 静态资源根路径,(后面相关前端静态资源都放单该路径下)
        root /home/admin;
        location / {
          root /home/admin/dist;
          index index.html;
          try_files $uri /index.html;
        }
        location /api {
          proxy_pass http://backend;
        }
        # location ^~ /bridgeApi {
        #   proxy_set_header X-Forwarded-For $remote_addr;
        #   proxy_pass http://bifrostApi/api;
        # }
        client_max_body_size 4096M;
        client_header_timeout 900s;
        client_body_timeout 900s;
        proxy_connect_timeout 900s;
        proxy_send_timeout 900s;
        proxy_read_timeout 900s;
        keepalive_timeout  900s;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值