首先nginx容器內(nèi)部的結(jié)構(gòu):
進入容器:
docker exec -it b511b6049f57 bash
查看容器的結(jié)構(gòu)目錄:其實每一個容器就相當(dāng)于一個獨立的系統(tǒng)。
root@b511b6049f57:/# ls
bin dev home lib64 mnt proc run srv tmp var
boot etc lib media opt root sbin sys usr
nginx的結(jié)構(gòu)目錄在容器中:
- 日志位置:/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,覆蓋掉即可。
在本地創(chuàng)建對應(yīng)的文件夾和主配置文件nginx.conf:
mkdir -p /home/test/nginx/{log,conf,html}
touch nginx.conf
nginx.conf包含子配置文件(最后一行):
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下創(chuàng)建一個默認(rèn)的default.conf:
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 Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
準(zhǔn)備完成上面的本地文件以后開始啟動容器掛載到本地相關(guān)配置文件:
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:掛載項目目錄
掛載完成以后訪問主頁面:
然后在訪問我們之前在default寫的一個location /images:
重啟nginx:
docker exec -it b511b6049f57 nginx -s reload
到此這篇關(guān)于詳解docker nginx 容器啟動掛載到本地的文章就介紹到這了,更多相關(guān)docker nginx啟動掛載內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!