【Nginx】docker运行Nginx及设置

打印 上一主题 下一主题

主题 830|帖子 830|积分 2492

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官方镜像:
  1. docker pull nginx
复制代码

  • 如果你想要拉取特定版本的Nginx镜像,可以通过指定标签来完成。例如,要拉取Nginx 1.19版本的镜像,可以使用:
  1. docker pull nginx
  2. :1.19
复制代码

  • 查看已下载的镜像
  1. docker images
复制代码

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


  • /home/nginx/nginx.conf
  1. worker_processes        1;  # 工作进程数量,通常设置为CPU核心数
  2. events {
  3.         worker_connections      1024; # 每个工作进程的最大连接数
  4. }
  5. http {
  6.         include         /etc/nginx/mime.types;  # 包含MIME类型定义
  7.         default_type    application/octet-stream;  # 默认文件类型
  8.         sendfile        on; # 启用高效文件传输模式
  9.         keepalive_timeout       65; # 保持连接的超时时间
  10.         server {
  11.                 listen  80; # 监听的端口
  12.                 server_name     localhost;
  13.                 location / {
  14.                         root    /usr/share/nginx/html;  # 静态文件的根目录
  15.                         index   index.html index.htm;  # 默认文件
  16.                 }
  17.                 error_page      500 502 503 504 /50x.html; # 错误页面
  18.                 location = /50x.html {
  19.                         root    /usr/share/nginx/html; # 错误页面的根目录
  20.                 }
  21.         }
  22. }
复制代码


  • /home/nginx/html/index.html
  1.         <html lang="en">
  2.         <head>
  3.                 <meta charset="UTF-8" />
  4.             <meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline' 'unsafe-eval';" />
  5.             <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  6.             <title>my nginx test</title>
  7.         </head>
  8.         <body>
  9.              <div>hello nginx html</div>
  10.              <h1>edit html</h1>
  11.         </body>
  12.         </html>
复制代码

  • 运行Nginx
  1. docker run --name my-nginx-test3  -p 80:80
  2.         -v /home/nginx/nginx.conf:/etc/nginx/nginx.conf     
  3.         -v /home/nginx/html:/usr/share/nginx/html  
  4.         -d nginx
复制代码
运行容器:docker run
–name: 为容器指定一个唯一的名称,可以通过名称来引用容器,而不是使用容器的ID
-p:映射端口,[宿主机端口(访问端口)]:[nginx容器内端口]
-v :绑定挂载设置 [宿主机路径]:[容器内路径]
-d:后台运行,返回运行成功的镜像id

  • 查看运行的容器
  1. docker ps
复制代码


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


  • 重载Nginx设置:
  1. docker exec <容器name> nginx -s reload
复制代码


  • 重启Nginx容器:
  1. docker restart nginx
复制代码

  • 浏览器输入ip:端口

通过Dockerfile构建Nginx镜像后拉取

注意执行上下文路径

  • 创建Dockerfile:创建一个Dockerfile来构建您的Nginx镜像。
  1. # 使用Nginx官方镜像作为基础镜像
  2. FROM nginx:alpine
  3. # 将dist目录(包含index.html和其他静态文件)复制到Nginx容器的静态文件目录
  4. # ./dist相对执行构建上下文的路径
  5. COPY ./dist/ /usr/share/nginx/html/
  6. # 将自定义的Nginx配置文件复制到Nginx容器(此步骤将修改nginx完整的主配置文件)
  7. COPY nginx/nginx.conf /etc/nginx/nginx.conf
复制代码

  • 准备Nginx设置文件(nginx.conf):创建一个Nginx设置文件来定义如何服务您的静态文件。
    同上面的 /home/nginx/nginx.conf 文件
  • 准备dist/index.html文件
  1.         <html lang="en">
  2.         <head>
  3.                 <meta charset="UTF-8" />
  4.             <meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline' 'unsafe-eval';" />
  5.             <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  6.             <title>dockerfile nginx test</title>
  7.         </head>
  8.         <body>
  9.              <div>hello use dockerfile nginx html</div>
  10.         </body>
  11.         </html>
复制代码

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


  • 构建Docker镜像
    1. docker build -t my-dockerfile-nginx -f Dockerfile .
    复制代码
    -t: 选项用于指定镜像的名称和标签
    . :末了的点号表现当前目次是构建上下文
    -f:指定dockerfile地点位置,若在当前执行目次可不用指定
  • 运行Docker容器,开放9999端口访问
    1. docker run --name dockerfile-nginx -p 9999:80 -d my-dockerfile-nginx
    复制代码

  • 浏览器输入ip:端口


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

刘俊凯

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表