使用nginx實現一個主機部署多域名指向不同docker項目


 1,安裝 docker

yum install docker

使用Docker 中國加速器

vim  /etc/docker/daemon.json

添加下面代碼 

{
  "registry-mirrors": ["https://registry.docker-cn.com"],
  "live-restore": true
}

(這個文件 初始狀態是空的 只有“{}”)

啟動服務

systemctl start docker

systemctl restart docker --重啟
systemctl stop docker    --停止

查看版本

 docker version

查看狀態

service docker status 

2,安裝nginx

配置Nginx最新源

vim /etc/yum.repos.d/nginx.repo

添加下列內容

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1

執行安裝

yum install nginx

啟動服務

systemctl start nginx

systemctl restart nginx --重啟
systemctl stop nginx    --停止

啥也不顯示表示正常啟動,如顯示

表示啟動出錯,看這里解決 https://blog.csdn.net/a1007720052/article/details/82255226

輸入http://服務器IP/ 如果能看到nginx的界面,就表示安裝成功了

3,把項目推送到docker hub

需要先執行 docker login 登錄到 docker hub
docker push ejiyuan/demo-docker

命令后面的 image tag 必須是 docker hub 用戶名 + “/” + 項目名稱形式,如果“/”與當前登錄的用戶名不對應 會提示沒有權限

Error response from daemon: pull access denied for io/webapp, repository does not exist or may require 'docker login'

你可以使用下列命令修改鏡像tag名稱后再進行推送

docker tag io/webapp ejiyuan/webapp

4,從docker hub 中拉取 項目 docker image

 在你需要部署的服務上安裝docker 先執行 docker login 登錄到 docker hub 然后執行下列命令拉取鏡像到你的服務器上

docker pull ejiyuan/demo-docker

 docker pull [image 名稱]

5,啟動 docker運行鏡像服務

查看鏡像文件

運行鏡像到容器中: 

docker run -p 127.0.0.1:9000:8080 -t docker.io/ejiyuan/demo-docker

docker之進入啟動容器查看目錄結構:docker exec -it containerID /bin/bash 或 docker exec -it containerID /bin/sh

這里我不想將9000端口暴露給外網(所有請求都從nginx,映射過來,也就是僅對往外開放80端口)所有限定ip:127.0.0.1,如果你既想實現通過指定域名訪問,又想通過外部 “ip+端口” 訪問,這里去掉127.0.0.0即可

檢查是否正常運行:

方法1,使用curl透一下:

 

 我的默認控制器會返回 hello Docker World

方法2,檢查服務運行狀態

方法3,使用 docker ps命令查看運行的容器

 

6,配置nginx:

 vim /etc/nginx/nginx.conf

修改或添加一個server標簽

    server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  _;
        root         /usr/share/nginx/html;
        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;
        location / {
        }
        error_page 404 /404.html;
            location = /40x.html {
        }
        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }
    #下面是自定義配置 端口轉發
    server {
      listen 80;
      server_name www.abc.com;# 這里配置我們的域名,確定域名已解析到本機
      location / {
        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://127.0.0.1:9000; #轉發到本機9000端口
      }
    }

 重啟nginx:

systemctl restart nginx

在瀏覽器訪問你的域名 www.abc.com

查看 docker項目容器運行日志

 

7,參考文檔

docker nginx實現一個主機部署多個站點

在Docker容器環境中用Let's Encrypt部署HTTPS

為 docker 中的 nginx 配置 https

 「Spring Boot」Docker配置SSL證書(免費證書)

Docker容器應用日志查看 

Nginx/Tengine服務器安裝SSL證書   

關於Docker目錄掛載的總結 

docker之進入啟動容器查看目錄結構


免責聲明!

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



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