使用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
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 image
先登入
docker login
輸入在 docker hub的賬號密碼進行登入
登入成功後,執行下面命令拉取
docker pull [image 名稱]
4,啟動 docker執行映象服務
檢視映象檔案
執行映象到容器中:
docker run -p 127.0.0.1:9000:8080 -t docker.io/ejiyuan/demo-docker
這裡我不想將9000埠暴露給外網(所有請求都從nginx,對映過來,也就是僅對往外開放80埠)所有限定ip:127.0.0.1,如果你既想實現通過指定域名訪問,又想通過外部 “ip+埠” 訪問,這裡去掉127.0.0.0即可
檢查是否正常執行:
方法1,使用curl透一下:
我的預設控制器會返回 hello Docker World
方法2,檢查服務執行狀態
方法3,使用 docker ps命令檢視執行的容器
5,配置nginx:
vim /etc/nginx/nginx.conf
修改或新增一個server標籤
server { listen80 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專案容器執行日誌
6,參考文件
在Docker容器環境中用Let's Encrypt部署HTTPS