一、Docker 安裝 Nginx
docker pull nginx # 不加版本號 默認拉取最新版
注意
:這里有一個需要注意的點,Nginx 一般是根據(jù)配置文件啟動的。
如果我們在第一次啟動的時候就掛載目錄,那么因為我們宿主機是空文件,會直接導(dǎo)致 Nginx 容器內(nèi)的配置文件被覆蓋,致使啟動失敗。
所以的步驟如下
1、宿主機創(chuàng)建好要掛載的目錄
mkdir -p /home/nginx/
mkdir -p /home/nginx/logs
mkdir -p /home/nginx/html
-p
?參數(shù)的作用就是允許創(chuàng)建多級目錄
2、啟動一個不掛載的容器
docker run -d --name nzc-nginx -p 80:80 nginx
為了讓大家更進一步理解 Nginx 目錄結(jié)構(gòu),我們用命令進入 Nginx 容器
docker exec -it nzc-nginx bash
-it
?以交互式進入容器 ,bash
保留為容器終端的輸入形式,所以結(jié)合起來就是進入容器終端并且的保留為容器終端的輸入形式(-it和bash的結(jié)合作用)
/etc/nginx/nginx.conf
是nginx的主配置文件,具體內(nèi)容留在后一章節(jié)再說吧。
/etc/nginx/conf.d
下的default.conf 就是默認 server 配置
3、從容器中把配置文件復(fù)制出來
退出容器的終端,直接在終端里輸入 exit 即可。
?docker cp nzc-nginx:/etc/nginx/nginx.conf /home/nginx/nginx.conf
?docker cp nzc-nginx:/etc/nginx/conf.d /home/nginx/
?docker cp nzc-nginx:/usr/share/nginx/html /home/nginx/ #此處就是網(wǎng)站站點目錄
4、暫停、刪除容器
查看所有正在運行的容器
docker ps
docker ps -a #查看所有容器
暫停、刪除容器
docker stop nzc-nginx # nzc-nginx 容器| 容器ID 也可以,只需要前3位數(shù)字即可
docker rm nzc-nginx
docker rm -f nzc-nginx #直接刪除正在運行的容器
5、重新啟動一個掛載目錄的容器
docker run \
-p 80:80 \
--name nzc-nginx \
-v /home/nginx/nginx.conf:/etc/nginx/nginx.conf \
-v /home/nginx/conf.d:/etc/nginx/conf.d \
-v /home/nginx/logs:/var/log/nginx \
-v /home/nginx/html:/usr/share/nginx/html \
-d nginx:latest
測試:可以成功訪問就是成功啟動啦。
二、Nginx 配置文件講解
本小章節(jié)只是針對與項目有關(guān)聯(lián)配置文件進行一番簡單的講解,更詳細的可能就需要大家去找找其他創(chuàng)作者所寫的文章啦。望大家見諒
我們先看看之前上文提了一嘴的主配置文件:
nginx.conf
?user nginx;
?worker_processes auto;
?# error_log 輸出目錄
?error_log /var/log/nginx/error.log notice;
?pid ? ? ? /var/run/nginx.pid;
??
?events {
? ?# 單個工作進程可以允許同時建立外部連接的數(shù)量
? ? 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; 支持傳遞壓縮文件
? # nginx 配置文件中支持 include ,即支持多配置文件組合
? ? include /etc/nginx/conf.d/*.conf;
?}
你可別小瞧這個文件,里面有不少設(shè)置的開關(guān)勒,不過這次不是寫這里~~
繼續(xù)來到?default.conf
?server {
? # 這里就是表示監(jiān)聽的端口
? ? listen ? ? ? 80;
? ? listen [::]:80;
? ? ?# 這里表示服務(wù)地址 寫域名或者ip
? ? server_name localhost;
? ? ?#access_log /var/log/nginx/host.access.log main;
? ? ?
? ? ?# 這里就是我們今天要接觸的東西了
? ? ?# / 表示的是 ip:port后面跟著的路徑 / 就是 ip:port/
? ? ?# 如果是 /nzc 訪問的時候就是 ip:port/nzc/
? ? ?#基于這個邏輯,我們就可以運行多個站點
? ? ?# 這里還可以寫表達式、正則表達式等
? ? location / {
? ? ? ? root ? /usr/share/nginx/html;
? ? ? ? index index.html index.htm;
? ? }
? ? ?#error_page 404 ? ? ? ? ? ? /404.html;
??
? ? ?# redirect server error pages to the static page /50x.html
? ? ?#錯誤頁面轉(zhuǎn)發(fā)
? ? error_page ? 500 502 503 504 /50x.html;
? ? location = /50x.html {
? ? ? ? root ? /usr/share/nginx/html;
? ? }
??
? ? ?# 反向代理的例子
? ? ?# 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;
? ? ?#}
?}
我們在 default.conf 中加上一個 location ,等會部署我們的項目文章來源:http://www.zghlxwxcb.cn/news/detail-847199.html
server {
? ? location /nzc {
? ? ? ? # alias 后面跟著的是容器內(nèi)部的目錄,但是我們是掛載出來的,實際上我們放在宿主機相應(yīng)的掛載目錄下即可
? ? ? ? alias ? /usr/share/nginx/html/www/blog/dist;
? ? ? ? # 這里的crush是我項目前綴
? ? ? ? index index.html index.htm;
? ? ? ? try_files $uri $uri/ /nzc/index.html;
? ? ? }
?}
三、部署前端項目
對了修改完?nginx
配置文件,記得重啟一下,不然不生效。文章來源地址http://www.zghlxwxcb.cn/news/detail-847199.html
docker restart nzc-nginx
到了這里,關(guān)于Docker 安裝 Nginx 部署前端項目的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!