京东6.18大促主会场领京享红包更优惠

 找回密码
 立即注册

QQ登录

只需一步,快速开始

docker启动Nginx的两种方式小结

2024-11-4 02:06| 发布者: 4d5a8576d| 查看: 190| 评论: 0

摘要: 目次Nginx镜像的获取Nginx关键目次直接从Docker Hub拉取Nginx镜像通过Dockerfile构建Nginx镜像后拉取Nginx镜像的获取 直接从Docker Hub拉取Nginx镜像通过Dockerfile构建Nginx镜像后拉取 二者区别 主要区别在于定制化
目次

Nginx镜像的获取

  • 直接从Docker Hub拉取Nginx镜像
  • 通过Dockerfile构建Nginx镜像后拉取

二者区别

主要区别在于定制化水平和构建过程的控制:

直接拉取Nginx镜像:

  • 轻便性:直接使用docker pull nginx下令可以快速拉取官方的Nginx镜像。这个过程非常简朴,得当快速摆设标准的Nginx服务。
  • 标准化:拉取的是Nginx官方维护的镜像,保证了环境的同等性和可靠性。这个镜像经过了官方的优化和安全更新。
  • 限定:官方镜像提供了Nginx的标准安装,大概不包含特定的模块或配置。如果必要特殊配置或额外的模块,大概必要在容器启动后手动举行调整。

通过Dockerfile构建Nginx镜像:

  • 定制化:通过编写Dockerfile,可以在构建过程中定制Nginx的安装,包括添加特定的模块、配置文件、环境变量等。这为满意特定需求提供了机动性。
  • 主动化:构建过程可以主动化实行,包括从根本镜像安装Nginx、应用配置文件、复制网站内容等。这使得整个摆设过程可重复、可追踪。
  • 维护:如果必要更新配置或添加功能,可以直接修改Dockerfile和相关文件,然后重新构建镜像。这简化了更新和维护过程。
  • 构建时间:根据Dockerfile的复杂度,构建镜像大概必要一些时间。对于频仍的构建和测试,这大概会稍微增长开辟周期。

总结,直接拉取Nginx镜像得当快速摆设和标准使用场景,而通过Dockerfile构建Nginx镜像得当必要特定配置、模块或主动化摆设流程的场景。选择哪种方式取决于项目标具体需求和开辟流程。

Nginx关键目次

配置目次 (/etc/nginx/): 存放Nginx的主配置文件nginx.conf以及其他配置文件。这个目次通常包括:

  • nginx.conf:主配置文件
  • sites-available/:存放每个站点的配置文件,这些文件必要被链接到sites-enabled/才能被Nginx读取。
  • sites-enabled/:存放链接到sites-available/中站点配置文件的符号链接,Nginx会读取这里的配置来启动网站。
  • conf.d/:用于存放其他额外的配置文件,Nginx会主动加载这个目次下的配置文件。
    - default.conf : 默认服务器配置文件
    - *.conf:额外的配置文件
  • 日志目次 (/var/log/nginx/): 存放访问日志和错误日志。
    • access.log:默认的访问日志文件,记录全部哀求的详细信息。
    • error.log:默认的错误日志文件,记录启动、运行错误以及哀求处理的题目。
  • 网站内容目次 (/usr/share/nginx/html): 默认的网站根目次,存放网站的静态文件,如HTML、CSS、JavaScript等。
  • 可实行文件目次 (/usr/sbin/nginx): 存放Nginx的可实行文件。
  • 客户端暂时文件目次 (/var/cache/nginx/): 存放客户端哀求的暂时文件,好比用于缓存的文件。
  • SSL证书目次: 存放SSL证书和私钥的目次,通常这个目次不是固定的,必要在Nginx的SSL配置中指定证书和私钥文件的路径。

直接从Docker Hub拉取Nginx镜像

拉取最新的Nginx官方镜像:

[code]docker pull nginx [/code]

如果你想要拉取特定版本的Nginx镜像,可以通过指定标签来完成。比方,要拉取Nginx 1.19版本的镜像,可以使用:

[code]docker pull nginx:1.19 [/code]

检察已下载的镜像

[code]docker images [/code]

配置Nginx
通常全部配置都应该通过Docker卷(volumes)或绑定挂载(bind mounts)来管理,以便于配置的长期化和更新。
所以先在宿主机上创建配置文件 ,再将其挂载到nginx

/home/nginx/nginx.conf

[code]worker_processes 1; # 工作历程数量,通常设置为CPU核心数 events { worker_connections 1024; # 每个工作历程的最大毗连数 } http { include /etc/nginx/mime.types; # 包含MIME类型界说 default_type application/octet-stream; # 默认文件类型 sendfile on; # 启用高效文件传输模式 keepalive_timeout 65; # 保持毗连的超时时间 server { listen 80; # 监听的端口 server_name localhost; # 处理以/开头的哀求 location / { root /usr/share/nginx/html; # 界说网站静态资源根目次 index index.html index.htm; # 默认文件(从root目次下找) } # 处理以/api/开头的哀求,并将它们转发到后端服务器 location /api/ { # 指令用于修改或添加传递给后端服务器的哀求头。 proxy_set_header Host $http_host; # 哀求头中的Host字段的值 proxy_set_header X-Real-IP $remote_addr; # 发起哀求的客户端的IP地址 proxy_set_header REMOTE-HOST $remote_addr; # 在署理哀求时构建X-Forwarded-For头(用于追踪哀求的原始IP地址,可包含多个) proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass 署理转发哀求的目标地址; # 后端地址 } error_page 500 502 503 504 /50x.html; # 错误页面 location = /50x.html { root /usr/share/nginx/html; # 错误页面的根目次 } } } [/code]

/home/nginx/html/index.html

[code] <html lang="en"> <head> <meta charset="UTF-8" /> <meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline' 'unsafe-eval';" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>my nginx test</title> </head> <body> <div>hello nginx html</div> <h1>edit html</h1> </body> </html>[/code]

启动Nginx

[code]docker run --name my-nginx-test3 -p 80:80 -v /home/nginx/nginx.conf:/etc/nginx/nginx.conf -v /home/nginx/html:/usr/share/nginx/html -d nginx [/code]

启动容器:docker run
–name: 为容器指定一个唯一的名称,可以通过名称来引用容器,而不是使用容器的ID
-p:映射端口,[code][宿主机端口(访问端口)]:[nginx容器内listen的端口][/code]-v :绑定挂载配置 [code][宿主机路径]:[容器内路径][/code]-d:后台运行,返回运行成功的镜像id

检察运行的容器

[code]docker ps [/code]

在这里插入图片描述

运行后修改配置文件重启生效

重载Nginx配置:

[code]docker exec <容器name> nginx -s reload [/code]
  • 重启Nginx容器:
[code]docker restart nginx [/code]

欣赏器输入ip:端口

在这里插入图片描述

通过Dockerfile构建Nginx镜像后拉取

注意实行上下文路径

创建Dockerfile:创建一个Dockerfile来构建您的Nginx镜像。

[code]# 使用Nginx官方镜像作为根本镜像 FROM nginx:alpine # 将dist目次(包含index.html和其他静态文件)复制到Nginx容器的静态文件目次 # ./dist相对实行构建上下文的路径 COPY ./dist/ /usr/share/nginx/html/ # 将自界说的Nginx配置文件复制到Nginx容器(此步调将修改nginx完备的主配置文件) COPY nginx/nginx.conf /etc/nginx/nginx.conf [/code]
  • 准备Nginx配置文件(nginx.conf):创建一个Nginx配置文件来界说怎样服务您的静态文件。
    同上面的 /home/nginx/nginx.conf 文件
  • 准备dist/index.html文件
[code] <html lang="en"> <head> <meta charset="UTF-8" /> <meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline' 'unsafe-eval';" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>dockerfile nginx test</title> </head> <body> <div>hello use dockerfile nginx html</div> </body> </html> [/code]

构建和运行Docker容器:使用Dockerfile和Nginx配置文件构建Docker镜像,并运行容器。

构建Docker镜像

[code]docker build -t my-dockerfile-nginx -f Dockerfile . [/code]

-t: 选项用于指定镜像的名称和标签
. :末了的点号表示当前目次是构建上下文
-f:指定dockerfile所在位置,若在当前实行目次可不用指定

运行Docker容器,开放9999端口访问

[code]docker run --name dockerfile-nginx -p 9999:80 -d my-dockerfile-nginx [/code]

欣赏器输入ip:端口

在这里插入图片描述

到此这篇关于docker启动Nginx的两种方式小结的文章就介绍到这了,更多相关docker启动Nginx内容请搜索脚本之家以前的文章或继续欣赏下面的相关文章希望各人以后多多支持脚本之家! 


来源:https://www.jb51.net/server/328772oy4.htm
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
关闭

站长推荐上一条 /6 下一条

QQ|手机版|小黑屋|梦想之都-俊月星空 ( 粤ICP备18056059号 )|网站地图

GMT+8, 2025-7-1 19:44 , Processed in 0.038729 second(s), 18 queries .

Powered by Mxzdjyxk! X3.5

© 2001-2025 Discuz! Team.

返回顶部