zoukankan      html  css  js  c++  java
  • Jenkins下用DockerFile自动部署Java(SpringBoot)项目

    Jenkins下用DockerFile自动部署Java(SpringBoot)项目,简单自用,勿喷

    一、Jenkins构建Java(SpringBoot)项目

    新建-构建一个Maven项目

    需要提一下,现在新安装的没有这个选项,需要在插件里安装一下 Maven Integration

    java配置,其他配置查看以前文章

    以上配置即可配置完成

    二、发布到服务器,DockerFile部署自动构建

    Publish SSH配置

    这里在目标服务器上放了个shell命令,我这里的web是做了个Nginx的负载均衡,所以路径方面自行修改

    Dockerfile配置文件,每行的意义网上都有,这里就不介绍了

    FROM java:8            #java1.8基础镜像
    VOLUME /tmp            #创建/tmp目录并持久化到Docker数据文件夹,因为Spring Boot使用的内嵌Tomcat容器默认使用/tmp作为工作目录
    MAINTAINER test        #作者名称
    ADD web-0.0.1-SNAPSHOT.jar test/test_web0.jar #复制jar到test下且重命名为test_web0.jar
    EXPOSE 8506            #容器开放端口
    ENTRYPOINT ["java","-jar","-Djava.security.egd=file:/dev/.urandom","test/test_web0.jar"].
    #容器执行命令
    

    删除、重载镜像容器等操作shell,这样做感觉不是太好,以后有更好的办法在解决

    #!/bin/bash -l
    docker stop test_web0;                            #停止容器
    docker rm test_web0;                              #删除容器
    docker rmi test/test_web0;                        #删除镜像
    cd /usr/local/wwwroot/test_web/test_web0;         #进入目录
    docker build -t test/test_web0.;                  #构建镜像 .为当前目录的dockerfile
    docker run -t -d --name test_web0-p 192.168.2.1:8506:8506 test/test_web0;  #创建容器
    

    到这jar包就可以访问了

    三、简单的nginx负载均衡(docker下,可略)

    这里的前提是我们已经做好了3个web站点

    首先下载nginx镜像

    docker images nginx

    自定义一个目录,写一个新的nginx.conf

    
    user  nginx;
    worker_processes  1;
    
    error_log  /var/log/nginx/error.log warn;
    pid        /var/run/nginx.pid;
    
    
    events {
        worker_connections  1024;
    }
    
    
    http {
        include       /etc/nginx/mime.types;
        default_type  application/octet-stream;
    
        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for"';
    
        access_log  /var/log/nginx/access.log  main;
    
        sendfile        on;
        #tcp_nopush     on;
    
        keepalive_timeout  65;
    
        #gzip  on;
        
    	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;
    	client_max_body_size    10m;
    	client_body_buffer_size   128k;
    	proxy_connect_timeout   5s;
    	proxy_send_timeout      5s;
    	proxy_read_timeout      5s;
    	proxy_buffer_size        4k;
    	proxy_buffers           4 32k;
    	proxy_busy_buffers_size  64k;
    	proxy_temp_file_write_size 64k;
    	
    	upstream tomcat {                        #配置如下,3个WEB
    		server 192.168.2.1:9006;    
    		server 192.168.2.2:9016;
    		server 192.168.2.3:9026;
    	}
    	server {                                  #集中在一个ip
            listen       9999;
            server_name  192.168.2.1; 
            location / {  
                proxy_pass   http://tomcat;
                index  index.html index.htm;  
            }  
     
        }
    
    
        include /etc/nginx/conf.d/*.conf;
    }
    
    

    配置完运行

    docker run -it -d --name n1 -v /user/n1/nginx.conf:/etc/nginx/nginx.conf --net=host --privileged nginx
    

    还可以用keepalived做成高可用的负载均衡,以后再说

  • 相关阅读:
    pair<,>
    PTA 5-8 File Transfer (25)
    PTA 5-6 Root of AVL Tree (25)
    PTA 5-5 Tree Traversals Again (25)
    HDU4288 Coder(线段树)
    CodeForces 371D Vessels(树状数组)
    POJ2762 Going from u to v or from v to u(单连通 缩点)
    LightOJ 1030 Discovering Gold(期望 概率)
    HDU5115 Dire Wolf(区间DP)
    HDU4008 Parent and son(树形DP LCA)
  • 原文地址:https://www.cnblogs.com/shook/p/13501578.html
Copyright © 2011-2022 走看看