centos7一步一步搭建docker nginx 及重點講解


 系統環境:centos7.7 (VMware中) 

 images版本:nginx:latest (截止2020.01.10最新版)

 1、拉取鏡像 docker pull nginx

  

 2、啟動nginx容器。  

docker run --name my_nginx_2020 -d -p 80:80 --restart=always -e TZ="Asia/Shanghai" nginx:latest

  

 3、訪問80站點。

  

 4、掛載nginx配置文件到宿主機。以上訪問正常,但如果要配置自己的項目文件,或者修改訪問路徑文件需要登錄到容器中去,還需要安裝vi等,所以我們下面使用掛載文件掛載到宿主機,一切修改在宿主機操作,還可以避免配置丟失。

  A、登錄nginx容器。docker exec -it my_nginx_2020 bash。進入/etc/nginx 查看文件列表,其中nginx.conf 配置nginx的全局基礎屬性配置。conf.d 存放訪問路徑的配置文件,本文不介紹nginx相關使用介紹,請自行搜索配置參數含義~~

    

  B、more nginx.conf 查看配置內容。通過文件內容可以看到日志是存儲在容器的 /var/log/nginx 文件夾下。更多配置要去conf.d 文件夾下查看。

    

  C、查看conf.d文件夾內文件配置。看到conf.d文件夾下只有一個default.conf文件,more default.conf 查看其內容,也可看到日志文件存儲在/var/log/nginx文件夾下,而項目html和靜態文件保存在/usr/share/nginx/html下。

    

  D、退出容器,並復制配置文件等。

    

  E、修改nginx.conf 和conf.d 中的默認文件,然后綁定到各自對應的容器文件。后來我轉念一想,其實可以將兩者內容合並到nginx.conf文件,那么只需要修改/www/my_nginx/nginx.conf 並掛載即可。以下是對nginx.conf的一個簡單配置。

# user root;
worker_processes 8;

events {
    worker_connections  10240;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    log_format  main  '$host "$request" $remote_addr $remote_user [$time_local] $status $request_time $body_bytes_sent "$http_referer" "$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main; # 這個地址竟然可以是docker里面的絕對路徑!!!,因為-v掛載到了此處
    keepalive_timeout  300;
    fastcgi_connect_timeout 300;
    fastcgi_send_timeout 300;
    fastcgi_read_timeout 300;
    send_timeout 300;

    client_max_body_size 200m;
    sendfile        on;
    #tcp_nopush     on;
    #gzip  on;

    limit_req_zone $binary_remote_addr zone=req_limit_per_ip_second:1m rate=10r/s;
    limit_req_zone $binary_remote_addr zone=req_limit_per_ip_minute:10m rate=100r/s;

    #server配置
    server{
        listen 80;
        server_name mytest;
        
        location ~ .*\.(php|php5|jsp)$ {
            deny all;
        }

        #
        location / {

            root   /usr/share/nginx/html; # 這個地址竟然可以是docker里面的絕對路徑!!!,因為-v掛載到了此處
            index  index.html index.htm;
        }

    }
}

 

  F、修改/www/my_nginx/html/index.html 文件。通過上面的第三步我們知道首頁顯示的內容,現在我們收到修改成顯示Hello World

    

    

  G、刪除原來啟動的nginx容器,重新運行一個掛載文件的容器。

    

docker run --name my_nginx_2020 -d -p 80:80 --restart=always -e TZ="Asia/Shanghai" -v /www/my_nginx/html:/usr/share/nginx/html -v /www/my_nginx/log:/var/log/nginx -v /www/my_nginx/nginx.conf:/etc/nginx/nginx.conf:ro nginx:latest

參數解析:
-d 后台運行容器,並返回容器ID;
--name 為容器起一個容易區分且容易書寫的名字
-p 映射宿主機端口到容器端口,宿主機端口:容器端口
--restart=always 機器重啟時自動啟動容器
-e       設定一些必須的環境變量。
          -e TZ="Asia/Shanghai" 設定時區為上海,強烈建議國內設定,否則容器內打印的所有日志時間都會差8小時。
-v       掛載宿主機文件到容器。
          -v /www/my_nginx/html:/usr/share/nginx/html  掛載html等靜態文件
          -v /www/my_nginx/log:/var/log/nginx        掛載日志文件
          -v /www/my_nginx/nginx.conf:/etc/nginx/nginx.conf:ro  掛載配置文件

原文地址:https://www.cnblogs.com/jying/p/12182715.html
作者:一定會去旅行
歡迎任何形式的轉載,但請務必注明出處。
限於本人水平,如果文章和代碼有表述不當之處,還請不吝賜教。

  H、再次訪問80站點。發現已經顯示我們的新內容。

    

    

  G、重啟nginx容器。以上頁面最后顯示的是中文嘆號!,默認的html應該是編碼不對,我們將“!”其去掉,然后重啟容器。這里我推薦stop再start,因為如果用restart,有時候配置內容有錯后nginx不會被重啟,而還是原來的配置,docker ps發現也在運行,但其實是沒有重啟,會對排錯造成很大的困擾。

    

    

 5、配置完成~~

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM