小知识:详解docker nginx 容器启动挂载到本地

首先nginx容器内部的结构:

进入容器:

?
1
docker exec -it b511b6049f57 bash

查看容器的结构目录:其实每一个容器就相当于一个独立的系统。

?
1
2
3
root@b511b6049f57:/# ls
bin  dev home lib64 mnt proc run     srv tmp var
boot etc lib     media  opt root sbin sys usr

nginx的结构目录在容器中:

日志位置:/var/log/nginx/ 配置文件位置:/etc/nginx/ 项目位置:/usr/share/nginx/html

如果你想在本地去添加location 需要把这些容器中的配置挂载到本地:

配置文件相对来说有点麻烦,一般nginx只需要加载nginx.conf就可以了,在dokcer中,是首先加载nginx.conf,然后在nginx.conf有这么一行include /etc/nginx/conf.d/*.conf;,就是加载conf.d目录下的配置文件。所以对于配置只需要挂载到conf.d,覆盖掉即可。

在本地创建对应的文件夹和主配置文件nginx.conf:

?
1
2
mkdir -p /home/test/nginx/{log,conf,html}
touch nginx.conf

nginx.conf包含子配置文件(最后一行):

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
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” “$http_host” “[$time_local]” “$request” “$status” “$body_bytes_sent”
“$bytes_sent” “$gzip_ratio” “$http_referer” “$http_user_agent” “$http_x_forwarded_for”
“$upstream_addr” “$upstream_response_time” “$request_time” “$request_body” “$http_authorization” ;
access_log /var/log/nginx/access.log main;
sendfile    on;
#tcp_nopush   on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
}

在 conf下创建一个默认的default.conf:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
server {
listen    80;
server_name localhost;
#charset koi8-r;
access_log /var/log/nginx/log/host.access.log main;
location / {
#root  /data/nginx/html;
root  /usr/share/nginx/html;
index index.html index.htm;
#autoindex on;
#try_files $uri /index/index/page.html;
#try_files $uri /index/map/page.html;
}
#error_page 404       /404.html;
# redirect server error pages to the static page /50x.html
#
error_page  500 502 503 504 /50x.html;
location = /50x.html {
root  /usr/share/nginx/html;
}
location ~ /images {
default_type              application/json;
return 200 {“code”: “a000000”, “message”: “ok”, “timestamp”: “20180307184426”, “data”: {“isvip”: “1”, “monthprolist”: []}};
}
# proxy the php scripts to apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
#  proxy_pass  http://127.0.0.1;
#}
# pass the php scripts to fastcgi server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
#  root      html;
#  fastcgi_pass  127.0.0.1:9000;
#  fastcgi_index index.php;
#  fastcgi_param script_filename /scripts$fastcgi_script_name;
#  include    fastcgi_params;
#}
# deny access to .htaccess files, if apaches document root
# concurs with nginxs one
#
#location ~ /\.ht {
#  deny all;
#}
}

准备完成上面的本地文件以后开始启动容器挂载到本地相关配置文件:

?
1
2
3
4
5
6
7
8
9
10
11
docker run –name docker_nginx -d -p 80:80 \
-v /home/test/nginx/log:/var/log/nginx \
-v /home/test/nginx/conf:/etc/nginx/conf.d \
-v /home/test/nginx/nginx.conf:/etc/nginx/nginx.conf \
-v /home/test/nginx/html:/usr/share/nginx/html nginx
###
第一个-v:挂载日志目录
第二个-v:挂载配置目录
第三个-v:挂载主配置文件
第四个-v:挂载项目目录

挂载完成以后访问主页面:

%小知识:详解docker nginx 容器启动挂载到本地-猿站网-插图

然后在访问我们之前在default写的一个location /images:

%小知识:详解docker nginx 容器启动挂载到本地-1猿站网-插图

重启nginx:

?
1
docker exec -it b511b6049f57 nginx -s reload

到此这篇关于详解docker nginx 容器启动挂载到本地的文章就介绍到这了,更多相关docker nginx启动挂载内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/qq_25406669/article/details/88339513

声明: 猿站网有关资源均来自网络搜集与网友提供,任何涉及商业盈利目的的均不得使用,否则产生的一切后果将由您自己承担! 本平台资源仅供个人学习交流、测试使用 所有内容请在下载后24小时内删除,制止非法恶意传播,不对任何下载或转载者造成的危害负任何法律责任!也请大家支持、购置正版! 。本站一律禁止以任何方式发布或转载任何违法的相关信息访客发现请向站长举报,会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。本网站的资源部分来源于网络,如有侵权烦请发送邮件至:2697268773@qq.com进行处理。
建站知识

小知识:linux下用户程序同内核通信详解(netlink机制)

2023-3-29 20:01:34

建站知识

小知识:Nginx+PHP+MySQL双机互备、全自动切换方案

2023-3-29 20:09:10

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索