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;
}
}