docker+nginx負載均衡
阿新 • • 發佈:2020-12-30
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一次。