1. 程式人生 > 其它 >docker+nginx負載均衡

docker+nginx負載均衡

技術標籤:Javanginxdockerjava

nginx

使用Nginx部署一個java springboot應用

docker 製作springboot應用映象

將製作好的jar包放置到虛擬機器上
在這裡插入圖片描述

新建dockerfile目錄

touch dockerfile

FROM java:8
VOLUME /tmp
ADD dockertest-0.0.1-SNAPSHOT.jar dockertest-0.0.1-SNAPSHOT.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar"
,"/dockertest-0.0.1-SNAPSHOT.jar"]

然後在這個目錄下執行docker build -t hello .

最後的.一點不要忘記。

檢視做好的映象
在這裡插入圖片描述

因為內建了tomcat,應用會比較大。

釋出映象應用

 docker run -d -p 3340:9090 --name hello1 hello

通過9090是springboot應用程式中設定的server.port

將容器的3340埠對映到程式中的9090埠

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-waW6QSRS-1608966737454)(F:\筆記\nginx\docker nginx.assets\image-20201226133109060.png)]

訪問程式

在這裡插入圖片描述

再發布另外一個hello程式

docker run -d -p 3341:9090 --name hello2 hello

通過瀏覽器訪問,可以正常訪問到這個再次釋出的程式
在這裡插入圖片描述

安裝Nginx

docker run -d -p 8080:80 --name nginx nginx

進入nginx配置conf

如果進入容器後,需要安裝vim用於檢視檔案

先去更新apt-get源

#複製原檔案備份
mv /etc/apt/sources.list /etc/apt/sources.list.bak

#修改sources.list
cat <<EOF >/etc/apt/sources.list
deb http://mirrors.ustc.edu.cn/debian stable main contrib non-free
deb http://mirrors.ustc.edu.cn/debian stable-updates main contrib non-free
EOF
apt-get install vim

配置/etc/nginx/conf.d/default.conf檔案

upstream hello{
    server 172.17.0.3:9090  weight=1;
    server 172.17.0.4:9090  weight=2;
}

server {
    listen       80;
    listen  [::]:80;
    server_name  localhost;

    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
        proxy_pass http://hello;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    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;

這裡我配置的很多次才找到的問題。

upstream hello{
    server 172.17.0.3:9090  weight=1;
    server 172.17.0.4:9090  weight=2;
}

172.17.0.3/172.17.0.4都是容器內分配的地址 9090都是程式入口,一定要對映docker內部的IP地址,不要對映虛擬機器的IP

啟動nginx

docker run -d -p 9000:80 --name nginx1 nginx

通過docker cp將本機配置檔案拷貝到容器內

docker cp default.conf 8632463a43e2:/etc/nginx/conf.d/

重啟Nginx

docker restart nginx1

然後在瀏覽器訪問

因為設定的權重不一樣,所以會顯示4兩次3一次。

在這裡插入圖片描述