关于后端:docker内网部署springboot项目

简介

一般来说,为了平安,企业的我的项目个别会部署在公司的内网中,对外网的拜访有肯定的限度,所以大部分人抉择间接应用java -jar间接部署springboot我的项目,然而如果用这种形式,没有对服务进行很好的治理,所以大多数人还是抉择docker进行部署。
本文介绍了内网装置docker,openjdk8,以及部署springboot的办法,心愿可能帮忙到你~

centos7离线装置docker

1、查看虚拟机版本

cat /etc/redhat-release

2、下载docker安装包,上传到服务器上

形式一:公众号获取
关注I am Walker回复 docker安装包

形式二:官网下载
https://download.docker.com/linux/static/stable/x86_64/

这里目前下载的是这个

之后上传到服务器上

3、解压并拷贝

#解压
tar -zxvf ./docker-20.10.9.tgz 
# 拷贝信息到bin
cp docker/* /usr/bin/

4、创立docker.service文件

vi /etc/systemd/system/docker.service
文件内容如下:

[Unit]
Description=Docker Application Container Engine 
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
ExecStart=/usr/bin/dockerd --selinux-enabled=false --insecure-registry=127.0.0.1
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target

5、其余配置与启动

#配置权限
chmod 777 /etc/systemd/system/docker.service
# 重载配置
systemctl daemon-reload
# 开启启动
systemctl enable docker.service
# 启动docker 
systemctl start docker
# 查问docker状态
systemctl status docker
# 查问版本
docker -v

参考地址:
https://blog.csdn.net/lingfeian/article/details/125482271

离线下载openjdk8

1、下载安装包

形式一:公众号获取

关注I am Walker,回复openjdk8即可

形式二:找一台有网络的虚拟机,拉取镜像进行下载
1、拉取镜像
# 先进行下载
docker pull openjdk:8-jre

查看imageId
docker images

2、下载docker镜像为tar包,保留到本地门路

docker save 26ac3f63d29f > /root/openjdk.tar
26ac3f63d29f为镜像id

2、将生成的tar包转移到没有网络的虚拟机上

3、加载镜像

 docker load < /opt/env/docker/openjdk.tar 

docker images 查看镜像,所以只能通过imageId去认了

如果发现repository和tag为空的话,须要设置一下镜像名称和tag,否则会失败
docker tag 26ac3f63d29f openjdk:8-jre

4、从新查看docker images

如果有名称和tag则ok了

离线部署springboot我的项目

1、确保docker和openjdk8镜像没问题

2、 编写dockerfile文件

# 依赖镜像 jdk
from openjdk:8-jre
# jar包文件参数
arg JAR_FILE
# 我的项目环境
# arg参数如果要在entrypoint中应用,须要应用env进行接管,没法间接应用
arg ACTIVE_ENV
env MY_ENV=${ACTIVE_ENV}
# 复制jar包为app.jar
copy ${JAR_FILE} app.jar
# 构建指令,然而留神,参数须要用逗号隔开,不能放在一起,否则会呈现参数拼接问题
# -Dspring.profiles.active 启动环境
entrypoint ["java","-Dspring.profiles.active=${MY_ENV}","-Duser.timezone=Asia/Shanghai","-Xms512m","-Xmx1024m","-XX:MetaspaceSize=128m","-XX:MaxMetaspaceSize=512m","-XX:+HeapDumpOnOutOfMemoryError","-jar","/app.jar"]

3、编译代码、获取jar包

应用mvn clean package -Dmaven.test.skip=true

而后将我的项目上传到和dockerfile同一目录下

4、编写run.sh 脚本

该脚本蕴含对镜像以及容器的相干操作,具体有须要的能够再补充
镜像

  • 构建镜像
  • 删除镜像
  • 重载镜像

容器

  • 创立容器
  • 重启容器
  • 删除容器
  • 查看日志等等

    #!/bin/bash
    
    IMAGE_NAME=bjyg:v1 # 镜像名称
    CONTAINER_NAME=bjyg # 容器名称
    MAP_PORT=22356:22356 # 映射端口 裸露端口:我的项目本来端口
    JAR_FILE_NAME=bjyg.jar # jar包文件名称
    DOCKERFILE_DIR=. # dockerfile文件地位 .代表当前目录下
    HOME=$(cd `dirname $0`;pwd) #以后文件门路
    ACTIVE_ENV=pre #后端我的项目启动环境
    
    
    #初始化
    init(){
    build
    create
    }
    
    
    # 构建指令
    build(){
    docker build --build-arg JAR_FILE=$JAR_FILE_NAME --build-arg ACTIVE_ENV=$ACTIVE_ENV -t $IMAGE_NAME $DOCKERFILE_DIR
    }
    
    #删除镜像
    rmi(){
    docker rmi $IMAGE_NAME
    }
    
    #从新构建
    rebuild(){
    stop
    rm
    rmi
    build
    }
    
    # 创立容器
    create(){
    docker run -id --name=$CONTAINER_NAME --restart=always -v $HOME/logs:/logs -p $MAP_PORT $IMAGE_NAME
    }
    
    # 删除容器
    rm(){
    docker rm $CONTAINER_NAME
    }
    
    # 启动办法
    start(){
    docker start $CONTAINER_NAME
    }
    
    # 敞开
    stop(){
    docker stop $CONTAINER_NAME
    }
    
    # 查看日志
    log(){
    docker logs -f $CONTAINER_NAME 
    }
    
    # 重启
    restart(){
    rebuild
    create
    }
    
    
    #应用阐明,用来提醒输出参数
    usage() {
      echo "Usage: sh 执行脚本.sh [init|build|rebuild|rmi|rm|create|start|stop|restart|log]"
      exit 1
    }
    
    
    # 第一个参数
    case "$1" in
          "init")
                  init
          ;;
          "rebuild")
                  rebuild
                  ;;
          "rmi")
                  rmi
                  ;;
          "build")
                  build
                  ;;
          "rmi")
                  rmi
                  ;;
          "rm")
                  rm
                  ;;
          "create")
                    create
                  ;;
          "start")
                  start
                  ;;
          "restart")
                  restart
                  ;;        
          "stop")
                  stop
                  ;;
          "log")
                  log
                  ;;
          *)
                  usage
                  ;;
    esac
    

5、构建镜像

应用 ./run.sh init,进行镜像构建以及容器创立
留神:确保该文件具备执行权限,如果没有的话,应用指令chmod 777 run.sh

查看我的项目日志
./run.sh log

6、其余

只更换jar包,重启我的项目时

./run.sh restart

查看日志

./run.sh log

本文由mdnice多平台公布

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理