docker内网部署springboot项目

一般来说,为了安全,企业的项目一般会部署在公司的内网中,对外网的访问有一定的限制,所以大部分人选择直接使用java -jar直接部署springboot项目,但是如果用这种方式,没有对服务进行很好的管理,所以大多数人还是选择docker进行部署。
本文介绍了内网安装docker,openjdk8,以及部署springboot的方法,希望能够帮助到你~

centos7离线安装docker

1、检查虚拟机版本

cat /etc/redhat-release
image.png

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

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

方式二:官网下载
https://download.docker.com/linux/static/stable/x86_64/
image.png
这里目前下载的是这个

之后上传到服务器上
image.png

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
image.png

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

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

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

image.png

3、加载镜像
 docker load < /opt/env/docker/openjdk.tar 

image.png

docker images 查看镜像,所以只能通过imageId去认了
image.png
如果发现repository和tag为空的话,需要设置一下镜像名称和tag,否则会失败
docker tag 26ac3f63d29f openjdk:8-jre
image.png

4、重新查看docker images

image.png
如果有名称和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
image.png
然后将项目上传到和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
image.png

6、其他
只更换jar包,重启项目时

./run.sh restart

查看日志

./run.sh log

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WalkerShen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值