将Docker中nginx静态资源目录映射到宿主机的某个目录及配置文件映射到宿主机

news2024/11/16 1:22:15

在Docker中运行Nginx时,可以通过-v或--volume参数将Nginx容器内的静态资源目录映射到宿主机的某个目录。这样,你就可以在宿主机上直接管理和修改这些静态资源,而无需进入容器内部。以下是具体的操作步骤:

一、准备宿主机目录

首先,在宿主机上创建一个目录,用于存放Nginx的静态资源。例如,可以创建一个名为nginx-static的目录:

mkdir -p /path/to/nginx-static

其中,/path/to/是自定义的路径,你可以根据实际情况进行调整。

二、启动Nginx容器并映射静态资源目录

使用docker run命令启动一个新的Nginx容器,并通过-v参数将宿主机上的nginx-static目录映射到容器内的静态资源目录(通常是/usr/share/nginx/html)。命令如下:

docker run -d -p 8002:80 --name my-nginx \
-v /path/to/nginx-static:/usr/share/nginx/html \
nginx:1.12.2

这条命令做了以下几件事情:

  • -d:以守护进程模式运行容器。
  • -p 8002:80:将宿主机的8002端口映射到容器的80端口,以便通过浏览器访问Nginx服务。
  • --name my-nginx:为容器指定一个名称(my-nginx),方便后续管理。
  • -v /path/to/nginx-static:/usr/share/nginx/html:将宿主机上的nginx-static目录映射到容器内的/usr/share/nginx/html目录,这是Nginx默认的静态资源目录。

三、验证映射是否成功

启动容器后,你可以在宿主机上的nginx-static目录中放置一些静态资源(如HTML、CSS、JavaScript文件等)。然后,通过浏览器访问宿主机的IP地址或域名(如果配置了DNS解析),你应该能够看到这些静态资源被Nginx成功提供。

四、注意事项

确保宿主机上的nginx-static目录具有正确的权限和所有权,以便Nginx容器能够访问其中的文件。

如果Nginx容器已经运行,并且你想要将静态资源目录映射到另一个宿主机目录,你需要先停止并删除现有的容器,然后按照上述步骤重新创建一个新的容器。

如果你想在容器内修改Nginx的配置文件(如nginx.conf),你也可以通过类似的方式将配置文件映射到宿主机的某个目录,并在该目录中编辑配置文件。然后,通过重启Nginx容器或重新加载Nginx配置来使更改生效。

通过以上步骤,你就可以将Docker中Nginx的静态资源目录映射到宿主机的某个目录,并在宿主机上直接管理和修改这些资源了。

五、将Docker中nginx静态资源目录映射到宿主机的某个目录及配置文件映射到宿主机:

docker run -d -p 8003:80 --name my-nginx -v /home/sam/nginx:/usr/share/nginx/html -v /home/sam/conf/nginx.conf:/etc/nginx/nginx.conf nginx:1.12.2

修改映射后的配置文件后记得重启docker服务,比如设置301跳转,以nginx 1.12.2为例,nginx.conf修改如下:

    server {
        listen 80;
        server_name yourdomain.com;  # 替换为你的域名
    
        # 其他配置...
    
        # 实现特定路径的301重定向
        location /abc {
            return 301  http://www.xxxxxxxxxx.com;
        }

        location / {
            # 默认配置,例如代理传递、静态文件服务等
            # 例如,如果你想让 Nginx 返回一个简单的 "Hello, World!" 页面,可以这样配置:
            root /usr/share/nginx/html;
            index index.html;
        }
    
        # 其他 location 块配置...
    }
user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/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  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    server {
        listen 80;
        server_name yourdomain.com;  # 替换为你的域名
    
        # 其他配置...
    
        # 实现特定路径的301重定向
        location /abc {
            return 301  http://www.xxxxxxxxxx.com;
        }

        location / {
            # 默认配置,例如代理传递、静态文件服务等
            # 例如,如果你想让 Nginx 返回一个简单的 "Hello, World!" 页面,可以这样配置:
            root /usr/share/nginx/html;
            index index.html;
        }
    
        # 其他 location 块配置...
    }

    include /etc/nginx/conf.d/*.conf;
}

注意以上配置内容。

重启docker中nginx:

[root@localhost home]# docker ps
CONTAINER ID   IMAGE                       COMMAND                   CREATED          STATUS             PORTS                                            NAMES
22183dc1c4ce   nginx:1.12.2                "nginx -g 'daemon of…"   43 minutes ago   Up 3 minutes       0.0.0.0:8001->80/tcp, :::8001->80/tcp            my-nginx-v
[root@localhost home]# docker restart my-nginx-v
my-nginx-v

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2241175.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Redis下载历史版本

Linux版本: https://download.redis.io/releases/ Windows版本: https://github.com/tporadowski/redis/releases Linux Redis对应gcc版本

Mysql篇-三大日志

概述 undo log(回滚日志):是 Innodb 存储引擎层生成的日志,实现了事务中的原子性,主要用于事务回滚和 MVCC。 redo log(重做日志):是 Innodb 存储引擎层生成的日志,实现…

MFC工控项目实例三十实现一个简单的流程

启动按钮夹紧 密闭,时间0到平衡 进气,时间1到进气关,时间2到平衡关 检测,时间3到平衡 排气,时间4到夹紧开、密闭开、排气关。 相关代码 void CSEAL_PRESSUREDlg::OnTimer_2(UINT nIDEvent_2) {// if (nIDEvent_21 &am…

通过 SSH 隧道将本地端口转发到远程主机

由于服务器防火墙,只开放了22端口,想要通过5901访问服务器上的远程桌面,可以通过下面的方式进行隧道转发。 一、示例命令 这条代码的作用是通过 SSH 创建一个 本地端口转发,将你本地的端口(5901)通过加密的 SSH 隧道连接到远程服务器上的端口(5901)。这种方式通常用于在…

docker——项目部署

什么是Docker? Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可抑制的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器完全使用沙盒机制,相互之间不会存在任何接口。几…

LabVIEW-TestExec SL

文章目录 新建LabVIEW .llb库链接vi至TestExec SLTestPlan调用调用自定义动作创建变量配置动作参数 注意事项 新建LabVIEW .llb库 创建一个文件夹用来存放文件。在此文件夹下创建两个文件夹,分别命名为Actions和Bin。其中,Actions用于存放动作&#xff…

数据结构--数组

一.线性和非线性 线性:除首尾外只有一个唯一的前驱和后继。eg:数组,链表等。 非线性:不是线性的就是非线性。 二.数组是什么? 数组是一个固定长度的存储相同数据类型的数据结构,数组中的元素被存储在一…

NFS-Ganesha 核心架构解读

NFSv4 简要概述 NFS 这个协议( NFSv2 )最初由 Sun Microsystems 在 1984 年设计提出,由于存在一些不足,因此在随后由几家公司联合推出了 NFSv3。到了 NFSv4 时,开发完全由 IETF 主导,设计目标是: 提高互联下的 NFS 访…

Simulink对仿真数据进行FFT频谱分析

1 问题引入 在仿真阶段,经常会遇到有些仿真结果的数据需要进行频谱分析,如何快速便捷地操作,这里介绍其中一种简单的方法。主要利用 Simulink 中 Scope 显示的数据进行保存并进行 FFT 频谱分析,按下文操作即可。 2 实战 2.1 将…

Python实现贪吃蛇 经典解压小游戏!附源码

大家应该都玩过诺基亚上面的贪吃蛇吧,那是一段美好的童年回忆,本文将带你一步步用python语言实现一个snake小游戏! 基础环境必备 版本:Python3 ●系统:Windows ●相关模块:pygame pip install pygame安…

Taro React-Native IOS 打包发布

http网络请求不到 配置 fix react-native facebook::flipper::SocketCertificateProvider‘ (aka ‘int‘) is not a function or func_rn运行debug提示flipper-CSDN博客 Xcode 15(iOS17)编译适配报错_no template named function in namespace std-CS…

Chrome使用IE内核

Chrome使用IE内核 1.下载扩展程序IE Tab 2.将下载好的IE Tab扩展程序拖拽到扩展程序界面,之后重启chrome浏览器即可

C++基础:Pimpl设计模式的实现

2024/11/14: 在实现C17的Any类时偶然接触到了嵌套类的实现方法以及Pimpl设计模式,遂记录。 PIMPL ( Private Implementation 或 Pointer to Implementation )是通过一个私有的成员指针,将指针所指向的类的内部实现数据进行隐藏。 …

深入理解AIGC背后的核心算法:GAN、Transformer与Diffusion Models

深入理解AIGC背后的核心算法:GAN、Transformer与Diffusion Models 前言 随着人工智能技术的发展,AIGC(AI Generated Content,人工智能生成内容)已经不再是科幻电影中的幻想,而成为了现实生活中的一种新兴力…

LeetCode面试经典150题C++实现,更新中

用C实现下面网址的题目 https://leetcode.cn/problems/merge-sorted-array/?envTypestudy-plan-v2&envIdtop-interview-150 1、数组\字符串 88合并两个有序数组 以下是使用 C 实现合并两个有序数组的代码及测试用例 C代码实现 #include <iostream> #include &l…

python怎么安装numpy

1、在python官网https://pypi.python.org/pypi/numpy中找到安装的python版本对应的numpy版本。 例如&#xff1a; python版本是&#xff1a; 下载的对应numpy版本是&#xff1a; 2、将numpy下载到python的安装目录下的scripts文件夹中&#xff1b; 3、然后在cmd中执行以下命…

js中typeOf无法区分数组对象

[TOC]&#xff08;js中typeOf无法区分数组对象) 前提&#xff1a;很多时候我们在JS中用typeOf来判断值类型&#xff0c;如&#xff1a;typeOf ‘abc’//string ,typeOf 123 //number; 但当判断对象为数组时返回的仍是’object’ 这时候我们可以使用Object.prototype.toString.c…

JavaScript方法修改 input type=file 样式

html中的<input type "file">的样式很难修改&#xff0c;又跟页面风格很不匹配。我就尝试了几种方法&#xff0c;但是不管是用label还是用opacity:0都很麻烦&#xff0c;还老是出问题&#xff0c;所以最后还是用JavaScript来解决。 下面附上代码&#xff1a;…

JS爬虫实战之TikTok_Shop验证码

TikTok_Shop验证码逆向 逆向前准备思路1- 确认接口2- 参数确认3- 获取轨迹参数4- 构建请求5- 结果展示 结语 逆向前准备 首先我们得有TK Shop账号&#xff0c;否则是无法抓取到数据的。拥有账号后&#xff0c;我们直接进入登录。 TikTok Shop 登录页面 思路 逆向步骤一般分为…

MDBook 使用指南

MDBook 是一个灵感来自 Gitbook 的强大工具&#xff0c;专门用于创建电子书和文档。它能够将 Markdown 编写的内容编译成静态网站&#xff0c;非常适合项目文档、教程和书籍的发布。 个人实践过许多文档方案&#xff0c;如 hexo、hugo、WordPress、docsify 和 mdbook 等&#…