docker 安裝nginx 配置目錄掛載


nginx 的安裝

mkdir /usr/local/docker
cd /usr/local/docker
docker run --name nginxtest -d nginx #運行一個測試的nginx
docker cp nginxtest:/etc/nginx ./ #把容器里的nginx的目錄復制
docker rm -f nginxtest #刪除測試的nginx-test

復制出來的nginx目錄結構

#復制出來的nginx目錄結構
[root@localhost docker]# tree nginx
nginx
├── conf.d
│   └── default.conf
├── fastcgi_params
├── koi-utf
├── koi-win
├── logs
│   ├── access.log
│   ├── error.log
│   ├── gin.haimait.com.access.log
│   ├── gin.haimait.com.error.log
│   ├── localhost.access.log
│   └── localhost.error.log
├── mime.types
├── modules -> /usr/lib/nginx/modules
├── nginx.conf
├── scgi_params
├── uwsgi_params
└── win-utf

運行mynginx容器

#運行mynginx 掛載到/wwwroot是為了保持容器和宿主機目錄一致,以免配置時出錯

docker run  \
--name mynginx \
-p 8081:80 \
-p 443:443 \
-v /etc/localtime:/etc/localtime:ro \
-v /wwwroot:/wwwroot \
-v $PWD/nginx:/etc/nginx \
-v $PWD/nginx/logs:/var/log/nginx \
--restart always \
-d nginx

編寫默認的配置文件

vim $PWD/nginx/conf.d/default.conf

把內容換下面的內容

server {

    listen       80;

    server_name  localhost;
    
    access_log  /var/log/nginx/localhost.access.log;
    error_log   /var/log/nginx/localhost.error.log;
    
    # 配置前端靜態文件目錄
    
    location / {
        root  /wwwroot/html;
        index  index.html index.htm index.php;
    }
    
    #location ~ \.php$ {
    #    fastcgi_pass   myphp73-fpm:9000; #myphp73-fpm容器的名字
    #    fastcgi_index  index.php;
    #    fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
    #    include        fastcgi_params;
    #}
    
    # 配置后台go服務api接口服務 代理到8877端口  
    #location ~ ^/goadminapi/ {
    #    proxy_set_header   Host             $http_host;
    #    proxy_set_header   X-Real-IP        $remote_addr;
    #    proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
    #    proxy_set_header   X-Forwarded-Proto  $scheme;
    #    rewrite ^/goadminapi/(.*)$ /$1 break;
    #    proxy_pass  http://127.0.0.1:8877;   
    #    }
}

配置一個域名也指向到/wwwroot/html目錄 確定你的域名已經解析到服務器的ip上了

vim $PWD/nginx/conf.d/gin.haimait.com.conf

內容如下:

server {

    listen       80;

    server_name  gin.haimait.com;

    access_log  /var/log/nginx/gin.haimait.com.access.log;
    error_log   /var/log/nginx/gin.haimait.com.error.log;
    
    # 配置前端靜態文件目錄
    location / {
        root  /wwwroot/html;    
        index  index.html index.htm index.php;
    }
    
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
    
    #location ~ \.php$ {
    #    fastcgi_pass   myphp73-fpm:9000; #myphp73-fpm容器的名字
    #    fastcgi_index  index.php;
    #    fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
    #    include        fastcgi_params;
    #}
    
    
    # 配置后台go服務api接口服務 代理到8877端口  
    #location ~ ^/goadminapi/ {
    #    proxy_set_header   Host             $http_host;
    #    proxy_set_header   X-Real-IP        $remote_addr;
    #    proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
    #    proxy_set_header   X-Forwarded-Proto  $scheme;
    #    rewrite ^/goadminapi/(.*)$ /$1 break;
    #    proxy_pass  http://127.0.0.1:8877;   
    #    }
    
}

重啟nginx

docker restart mynginx

新建index.html

mkdir /wwwroot/html
vim  /wwwroot/html/index.html

內容如下:

hello nginx , html

測試

以下說明都已經配置成功了

[root@localhost ~]# curl localhost:8081
hello nginx , html  
[root@localhost ~]# curl gin.haimait.com:8081
hello nginx , html 

瀏覽器訪問

刪除nginx容器重啟容器,wwwroot里的內容也不會丟

到此已經完成安裝

設置開機自動啟動容器

在運行docker容器時可以加如下參數來保證每次docker服務重啟后容器也自動重啟:

docker run --restart=always CONTAINER ID

如果已經啟動了則可以使用如下命令:

docker update --restart=always CONTAINER ID #設置啟動nginx時自動啟動
docker update --restart=no CONTAINER ID #設置啟動nginx時不啟動

[root@localhost www]# docker update --restart=always nginx
nginx

參考文檔:


免責聲明!

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



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