Springboot项目打包成Docker镜像

Springboot项目打包成Docker镜像

因Springboot项目开发完成后,需要打包成Docker中镜像部署到服务器上,故记录过程备忘.

0 制作基础

  • Springboot项目jar包.
  • linux虚拟机(centos7),安装docker,且docker中安装java8镜像.

1 项目测试

上传jar包到虚拟机中,使用 java -jar jar包名 ,运行结果如下:
image-20201122193843435

2 准备环境

指定一个目录,里面存放jar包,Dockerfile文件:
image-20201122194106227
Dockerfile文件内容:

FROM java:8 #指定基镜像
ADD farm_eureka-1.0-SNAPSHOT.jar myfarm.jar #添加项目,并重命名为myfarm.jar
ENV JAVA_HOME=/jdk8 #配置jdk环境
ENV PATH=$JAVA_HOME/bin:$PATH
ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
EXPOSE 6868 #暴露6868端口
ENTRYPOINT ["java","-jar","/myfarm.jar"] #指定执行启动项目

3 制作Docker镜像

docker bulid –f dockerfile文件路径 –t 镜像名称:版本
不指定版本默认为最新版本: latest
下面(注意" . "是当前目录)

docker build -f ./farm_dockerfile -t my_farm .
image-20201122195031222

4 使用镜像,创建容器,测试是否成功

创建一个守护式容器:

docker run -id --name=farm -p 6868:6868 my_farm

参数说明: 见上篇Docker入门知识:

Docker入门知识
image-20201122200945413

5 过程可能出现的报错

1 启动容器时报错:

docker: Error response from daemon: driver failed programming external connectivity on endpoint lamp3 (46b7917c940f7358948e55ec2df69a4dec2c6c7071b002bd374e8dbf0d40022c): (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 86 -j DNAT --to-destination 172.17.0.2:80 ! -i docker0: iptables: No chain/target/match by that name.

解决方法:

docker服务启动时定义的自定义链DOCKER被清除,重启docker即可.
systemctl restart docker

2 若访问不到, 可能是没有开放端口

解决方法:

方法1: 关闭防火墙 systemctl stop firewalld

方法2: 开放端口

  • 1开放端口(永久开放6868端口,添加到公开区域,允许外部连接 ) firewall-cmd --zone=public --add-port=6868/tcp --permanent
  • 2 重新加载防火墙的规则 firewall-cmd --reload

3 关于从本机(windows)到虚拟机(Linux)的jar包上/下传问题

1 使用SFTP命令完成上/下传输
1.1 上传操作:windows->linux
  • put path/文件名.后缀
# 举例
put D:\temp\123.txt
1.2 下载操作: linux->windows
  • lcd 要下载的windows目录路径
  • get 要下载的文件
2 SFTP命令介绍
sftp-- help 
可用命令: 
cd 路径                        更改远程目录到“路径” 
lcd 路径                       更改本地目录到“路径” 
chgrp group path               将文件“path”的组更改为“group” 
chmod mode path                将文件“path”的权限更改为“mode” 
chown owner path               将文件“path”的属主更改为“owner” 
exit                           退出 sftp 
help                           显示这个帮助文本 
get 远程路径                   下载文件 
ln existingpath linkpath       符号链接远程文件 
ls [选项] [路径]               显示远程目录列表 (linux)
lls [选项] [路径]              显示本地目录列表 (windows) 
mkdir 路径                     创建远程目录 
lmkdir 路径                    创建本地目录 
mv oldpath newpath             移动远程文件 
open [用户@]主机[:端口]        连接到远程主机 
put 本地路径                   上传文件 
pwd                            显示远程工作目录 
lpwd                           打印本地工作目录 
quit                           退出 sftp 
rmdir 路径                     移除远程目录 
lrmdir 路径                    移除本地目录 
rm 路径                        删除远程文件 
lrm 路径                       删除本地文件 
symlink existingpath linkpath  符号链接远程文件 
version                        显示协议版本 
2.1常用命令
cd 路径                        更改远程目录到“路径” 
lcd 路径                       更改本地目录到“路径” 
ls [选项] [路径]               显示远程目录列表 (linux)
lls [选项] [路径]              显示本地目录列表(windows) 
put 本地路径                   上传文件 
get 远程路径                   下载文件 

猜你喜欢

转载自blog.csdn.net/ABestRookie/article/details/109963254