Dockerfile, nginx.conf文件解读

Dockerfile文件

javascript 复制代码
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"]

文件解读

javascript 复制代码
# 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

javascript 复制代码
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解读

javascript 复制代码
# 将用户设置为 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;
    }
}
相关推荐
苹果醋333 分钟前
React源码02 - 基础知识 React API 一览
java·运维·spring boot·mysql·nginx
Hello.Reader1 小时前
深入解析 Apache APISIX
java·apache
菠萝蚊鸭1 小时前
Dhatim FastExcel 读写 Excel 文件
java·excel·fastexcel
旭东怪1 小时前
EasyPoi 使用$fe:模板语法生成Word动态行
java·前端·word
007php0071 小时前
Go语言zero项目部署后启动失败问题分析与解决
java·服务器·网络·python·golang·php·ai编程
∝请叫*我简单先生2 小时前
java如何使用poi-tl在word模板里渲染多张图片
java·后端·poi-tl
ssr——ssss2 小时前
SSM-期末项目 - 基于SSM的宠物信息管理系统
java·ssm
一棵星2 小时前
Java模拟Mqtt客户端连接Mqtt Broker
java·开发语言
鲤籽鲲2 小时前
C# Random 随机数 全面解析
android·java·c#
zquwei3 小时前
SpringCloudGateway+Nacos注册与转发Netty+WebSocket
java·网络·分布式·后端·websocket·网络协议·spring