当前位置: 首页 > news >正文

【Nginx】docker运行Nginx及配置

Nginx镜像的获取

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

二者区别

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

  1. 直接拉取Nginx镜像:

    • 简便性:直接使用docker pull nginx命令可以快速拉取官方的Nginx镜像。这个过程非常简单,适合快速部署标准的Nginx服务。
    • 标准化:拉取的是Nginx官方维护的镜像,保证了环境的一致性和可靠性。这个镜像经过了官方的优化和安全更新。
    • 限制:官方镜像提供了Nginx的标准安装,可能不包含特定的模块或配置。如果需要特殊配置或额外的模块,可能需要在容器启动后手动进行调整。
  2. 通过Dockerfile构建Nginx镜像:

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

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

Nginx关键目录

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

直接从Docker Hub拉取Nginx镜像

  1. 拉取最新的Nginx官方镜像:
docker pull nginx
  1. 如果你想要拉取特定版本的Nginx镜像,可以通过指定标签来完成。例如,要拉取Nginx 1.19版本的镜像,可以使用:
docker pull nginx:1.19
  1. 查看已下载的镜像
docker images
  1. 配置Nginx
    通常所有配置都应该通过Docker卷(volumes)或绑定挂载(bind mounts)来管理,以便于配置的持久化和更新。
    所以先在宿主机上创建配置文件 ,再将其挂载到nginx
  • /home/nginx/nginx.conf
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;  # 默认文件}error_page      500 502 503 504 /50x.html; # 错误页面location = /50x.html {root    /usr/share/nginx/html; # 错误页面的根目录 }}
}
  • /home/nginx/html/index.html
<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>
  1. 运行Nginx
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

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

  1. 查看运行的容器
docker ps

在这里插入图片描述

  1. 运行后修改配置文件重启生效
  • 重载Nginx配置:
docker exec <容器name> nginx -s reload
  • 重启Nginx容器:
docker restart nginx
  1. 浏览器输入ip:端口
    在这里插入图片描述

通过Dockerfile构建Nginx镜像后拉取

注意执行上下文路径

  1. 创建Dockerfile:创建一个Dockerfile来构建您的Nginx镜像。
# 使用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
  1. 准备Nginx配置文件(nginx.conf):创建一个Nginx配置文件来定义如何服务您的静态文件。
    同上面的 /home/nginx/nginx.conf 文件
  2. 准备dist/index.html文件
	<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>
  1. 构建和运行Docker容器:使用Dockerfile和Nginx配置文件构建Docker镜像,并运行容器。
  • 构建Docker镜像

    docker build -t my-dockerfile-nginx -f Dockerfile .
    

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

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

    docker run --name dockerfile-nginx -p 9999:80 -d my-dockerfile-nginx
    
  1. 浏览器输入ip:端口
    在这里插入图片描述

相关文章:

【Nginx】docker运行Nginx及配置

Nginx镜像的获取 直接从Docker Hub拉取Nginx镜像通过Dockerfile构建Nginx镜像后拉取 二者区别 主要区别在于定制化程度和构建过程的控制&#xff1a; 直接拉取Nginx镜像&#xff1a; 简便性&#xff1a;直接使用docker pull nginx命令可以快速拉取官方的Nginx镜像。这个过程…...

tensorflow和numpy的版本

查看cuda版本 dpkg -l | grep cuda i libcudart11.0:amd64 11.5.117~11.5.1-1ubuntu1 amd64 NVIDIA CUDA Runtime Library ii nvidia-cuda-dev:amd64 11.5.1-1ubuntu1 …...

二维Gamma分布的激光点云去噪

目录 1、Gamma 分布简介2、实现步骤 1、Gamma 分布简介 Gamma 分布在合成孔径雷达( Synthetic Aperture &#xff32;adar&#xff0c;SA&#xff32;) 图像分割中具有广泛应用&#xff0c;较好的解决了SA&#xff32; 图像中相干斑噪声对图像分割的影响。采用二维Gamma 分布对…...

鸿蒙笔记导航栏,路由,还有axios

1.导航组件 导航栏位置可以调整&#xff0c;导航栏位置 Entry Component struct t1 {build() {Tabs(){TabContent() {Text(qwer)}.tabBar("首页")TabContent() {Text(发现内容)}.tabBar(发现)TabContent() {Text(我的内容)}.tabBar("我的")}// 做平板适配…...

Spring 框架中都用到了哪些设计模式:单例模式、策略模式、代理模式

Spring 框架是一个功能强大的企业级应用开发框架,它使用了多种设计模式来提高代码的可维护性、可扩展性和可重用性。以下是 Spring 框架中常见的几个设计模式,并简要说明它们的应用场景: 1. 单例模式(Singleton Pattern) 定义:确保一个类只有一个实例,并提供全局访问点…...

阶段总结——基于深度学习的三叶青图像识别

阶段总结——基于深度学习的三叶青图像识别 文章目录 一、计算机视觉图像分类系统设计二、训练模型2.1. 构建数据集2.2. 网络模型选择2.3. 图像数据增强与调参2.4. 部署模型到web端2.5. 开发图像识别小程序 三、实验结果3.1. 模型训练3.2. 模型部署 四、讨论五、参考文献&#…...

深度解析Java世界中的对象镜像:浅拷贝与深拷贝的奥秘与应用

在Java编程的浩瀚宇宙中&#xff0c;对象拷贝是一项既基础又至关重要的技术。它直接关系到程序的性能、资源管理及数据安全性。然而&#xff0c;提及对象拷贝&#xff0c;不得不深入探讨其两大核心类型&#xff1a;浅拷贝&#xff08;Shallow Copy&#xff09;与深拷贝&#xf…...

Python | Leetcode Python题解之第218题天际线问题

题目&#xff1a; 题解&#xff1a; class Solution:def getSkyline(self, buildings: List[List[int]]) -> List[List[int]]:buildings.sort(keylambda bu:(bu[0],-bu[2],bu[1]))buildings.append([inf,inf,inf])heap [[-inf,-inf,-inf]]ans []for l,r,h in buildings:i…...

使用Spring Boot构建RESTful API

使用Spring Boot构建RESTful API 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天&#xff0c;我们将深入探讨如何使用Spring Boot构建RESTful API。通过这篇…...

Spark快速大数据分析PDF下载读书分享推荐

《Spark 快速大数据分析》是一本为 Spark 初学者准备的书&#xff0c;它没有过多深入实现细节&#xff0c;而是更多关注上层用户的具体用法。不过&#xff0c;本书绝不仅仅限于 Spark 的用法&#xff0c;它对 Spark 的核心概念和基本原理也有较为全面的介绍&#xff0c;让读者能…...

Centos7离线安装mysql-5.7.44bundle包

在 CentOS 7 上安装 mysql-5.7.44-1.el7.x86_64.rpm-bundle.tar&#xff08;这里假设这是一个包含多个 RPM 包的 tar 归档文件&#xff09;的步骤通常涉及解压归档文件、安装 RPM 包以及配置 MySQL 服务。以下是一个详细的步骤指南&#xff1a; 1. 下载和解压 RPM 包 首先&am…...

ROS melodic版本卸载---Ubuntu18.04

sudo apt-get remove ros-melodic-desktop-fullsudo apt-get remove gazebo* 删除依赖关系 sudo apt autoremove删除与ros关联的所有文件 sudo apt-get purge ros-* sudo rm -rf /etc/ros找到.bashrc文件删除含ros的环境配置语句 全部删除完毕&#xff0c;可以去计算机下的…...

Java面试之Java多线程常见面试题

1、什么是线程&#xff1f; 定义&#xff1a;线程是程序中的执行路径&#xff0c;是操作系统进行调度的基本单位。它允许程序并发执行多个任务&#xff0c;提高程序的响应速度和资源利用率。 2、为什么需要线程&#xff1f; 1、提高并发性&#xff1a;线程允许程序同时执行多…...

Java [ 基础 ] Java面向对象编程 (OOP) ✨

目录 ✨探索Java基础 Java面向对象编程 (OOP) ✨ 引言 1. 类和对象 2. 封装 3. 继承 4. 多态 5. 抽象 结论 ✨探索Java基础 Java面向对象编程 (OOP) ✨ 引言 Java是一门以面向对象编程&#xff08;OOP&#xff09;为基础的编程语言。OOP的核心概念包括类和对象、封装…...

敏捷开发笔记(第9章节)--开放-封闭原则(OCP)

目录 1&#xff1a;PDF上传链接 9.1 开放-封闭原则&#xff08;OCP&#xff09; 9.2 描述 9.3 关键是抽象 9.3.1 shape应用程序 9.3.2 违反OCP 糟糕的设计 9.3.3 遵循OCP 9.3.4 是的&#xff0c;我说谎了 9.3.5 预测变化和“贴切的”结构 9.3.6 放置吊钩 1.只受一次…...

苹果电脑清理app垃圾高效清理,无需专业知识

在我们的日常使用中&#xff0c;苹果电脑以其优雅的设计和强大的功能赢得了广泛的喜爱。然而&#xff0c;即便是最高效的设备&#xff0c;也无法免俗地积累各种不必要的文件和垃圾&#xff0c;特别是app垃圾。所以&#xff0c;苹果电脑清理app垃圾高效清理&#xff0c;对于大多…...

【算法】(C语言):快速排序(递归)、归并排序(递归)、希尔排序

快速排序&#xff08;递归&#xff09; 左指针指向第一个数据&#xff0c;右指针指向最后一个数据。取第一个数据作为中间值。右指针指向的数据 循环与中间值比对&#xff0c;若大于中间值&#xff0c;右指针往左移动一位&#xff0c;若小于中间值&#xff0c;右指针停住。右…...

模型驱动开发(Model-Driven Development,MDD):提高软件开发效率与一致性的利器

目录 前言1. 模型驱动开发的原理1.1 什么是模型驱动开发1.2 MDD的核心思想 2. 模型驱动开发的优势2.1 提高开发效率2.2 确保代码一致性2.3 促进沟通和协作2.4 方便维护和扩展 3. 实现模型驱动开发的方法3.1 选择合适的建模工具3.1.1 UML3.1.2 BPMN3.1.3 SysML 3.2 建模方法3.2.…...

记录discuz修改用户的主题出售价格

大家好&#xff0c;我是网创有方的站长&#xff0c;今天遇到了需要修改discuz的主题出售价格。特此记录下 方法很简单&#xff1a; 进入用于组-》选择论坛-》批量修改...

WGAN(Wassertein GAN)

WGAN E x ∼ P g [ log ⁡ ( 1 − D ( x ) ) ] E x ∼ P g [ − log ⁡ D ( x ) ] \begin{aligned} & \mathbb{E}_{x \sim P_g}[\log (1-D(x))] \\ & \mathbb{E}_{x \sim P_g}[-\log D(x)] \end{aligned} ​Ex∼Pg​​[log(1−D(x))]Ex∼Pg​​[−logD(x)]​ 原始 GAN …...

多模态2025:技术路线“神仙打架”,视频生成冲上云霄

文&#xff5c;魏琳华 编&#xff5c;王一粟 一场大会&#xff0c;聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中&#xff0c;汇集了学界、创业公司和大厂等三方的热门选手&#xff0c;关于多模态的集中讨论达到了前所未有的热度。其中&#xff0c;…...

在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能

下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能&#xff0c;包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...

iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版​分享

平时用 iPhone 的时候&#xff0c;难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵&#xff0c;或者买了二手 iPhone 却被原来的 iCloud 账号锁住&#xff0c;这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...

第25节 Node.js 断言测试

Node.js的assert模块主要用于编写程序的单元测试时使用&#xff0c;通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试&#xff0c;通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...

数据库分批入库

今天在工作中&#xff0c;遇到一个问题&#xff0c;就是分批查询的时候&#xff0c;由于批次过大导致出现了一些问题&#xff0c;一下是问题描述和解决方案&#xff1a; 示例&#xff1a; // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...

【JavaSE】绘图与事件入门学习笔记

-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角&#xff0c;以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向&#xff0c;距离坐标原点x个像素;第二个是y坐标&#xff0c;表示当前位置为垂直方向&#xff0c;距离坐标原点y个像素。 坐标体系-像素 …...

视觉slam十四讲实践部分记录——ch2、ch3

ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...

MySQL 知识小结(一)

一、my.cnf配置详解 我们知道安装MySQL有两种方式来安装咱们的MySQL数据库&#xff0c;分别是二进制安装编译数据库或者使用三方yum来进行安装,第三方yum的安装相对于二进制压缩包的安装更快捷&#xff0c;但是文件存放起来数据比较冗余&#xff0c;用二进制能够更好管理咱们M…...

关于easyexcel动态下拉选问题处理

前些日子突然碰到一个问题&#xff0c;说是客户的导入文件模版想支持部分导入内容的下拉选&#xff0c;于是我就找了easyexcel官网寻找解决方案&#xff0c;并没有找到合适的方案&#xff0c;没办法只能自己动手并分享出来&#xff0c;针对Java生成Excel下拉菜单时因选项过多导…...

什么是VR全景技术

VR全景技术&#xff0c;全称为虚拟现实全景技术&#xff0c;是通过计算机图像模拟生成三维空间中的虚拟世界&#xff0c;使用户能够在该虚拟世界中进行全方位、无死角的观察和交互的技术。VR全景技术模拟人在真实空间中的视觉体验&#xff0c;结合图文、3D、音视频等多媒体元素…...