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;
    }
}
相关推荐
morris1313 分钟前
【SpringBoot】Xss的常见攻击方式与防御手段
java·spring boot·xss·csp
七星静香28 分钟前
laravel chunkById 分块查询 使用时的问题
java·前端·laravel
Jacob程序员29 分钟前
java导出word文件(手绘)
java·开发语言·word
ZHOUPUYU30 分钟前
IntelliJ IDEA超详细下载安装教程(附安装包)
java·ide·intellij-idea
stewie633 分钟前
在IDEA中使用Git
java·git
Elaine2023911 小时前
06 网络编程基础
java·网络
G丶AEOM1 小时前
分布式——BASE理论
java·分布式·八股
落落鱼20131 小时前
tp接口 入口文件 500 错误原因
java·开发语言
想要打 Acm 的小周同学呀1 小时前
LRU缓存算法
java·算法·缓存
镰刀出海1 小时前
Recyclerview缓存原理
java·开发语言·缓存·recyclerview·android面试