简介
一般来说,为了平安,企业的我的项目个别会部署在公司的内网中,对外网的拜访有肯定的限度,所以大部分人抉择间接应用 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
查看 imageIddocker 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 多平台公布