docker部署Java项目流程

 参考视频:

Docker容器快速入门_哔哩哔哩_bilibili

 1.先在本地使用Java -jar 启动项目https://www.bilibili.com/video/BV1QP4y1W7ff/?p=15&spm_id_from=pageDriver&vd_source=da05bafd30a3de3fc0a3f2b9b3bcbef6


把本地项目使用Maven,先clean再install生成target目录,目录下有打成的.jar结尾的jar包,
记得修改日志路径为linux上的路径,

测试在本地使用win+r ,输入cmd打开命令行窗口,
#正常启动jar包,根据自己需要以下选一个命令进行操作

java -jar XXX.jar
#当前ssh窗口被锁定,可按CTRL + C打断程序运行,或直接关闭窗口,程序退出。


#当前ssh窗口不被锁定,但是当窗口关闭时,程序中止运行

java -jar XXX.jar &

#当用 nohup 命令执行作业时,缺省情况下该作业的所有输出被重定向到nohup.out的文件中,除非另外指定了输出文件


nohup java -jar XXX.jar &
#输出重定向到temp.file文件
nohup java -jar XXX.jar >temp.txt &
#即输出内容不打印到屏幕上,而是输出到temp.file文件中


#配置静态变量并不输出日志到控制台或者日志文件中

nohup java -jar  /data/server/ifsmp/ifsmp.war --spring.profiles.active=test --server.port=8080 >/dev/null 2>&1 &


# >/dev/null 2>&1 含义:
# 该条shell命令将不会输出任何信息到控制台,也不会有任何信息输出到文件中
# -–spring.profiles.active=test 含义:
#连续的两个减号–就是对application.properties中的属性值进行赋值的标识,等价于我们在application.properties中添加属性spring.profiles.active=test

#eureka-client配置如下:
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/
    healthcheck:
      enabled: true
  instance:
    prefer-ip-address: true
    instance-id: ${spring.cloud.client.ipAddress}:${server.port}

2.linux上使用docker部署

(1)docker部署Java项目


进入root目录
cd /root
新建文件夹目录
mkdir home
把jar包上传到新建/root/home目录下
创建文件名为dockerfile的文本文件,将maven打包好的jar包和dockerfile文件放在同一目录下,
touch dockerfile
Docker以从上到下的顺序运行dockerfile的指令。为了指定基本映像,第一条指令必须是FROM。
一个声明以#字符开头则被视为注释。可以在Docker文件中使用RUN,CMD,FROM,EXPOSE,ENV等指令。
FROM:指定基础镜像,必须为第一个命令
FROM指令用于指定基础镜像,ARG是唯一可以位于FROM指令之前的指令,一般用于声明基础镜像的版本
COPY指令:copy宿主机文件到镜像中。
ENTRYPOINT: 指定镜像的默认入口命令,该入口命令会在启动容器时作为根命令执行,所有其他传入值作为该命令的参数。

 (2)编写Dockerfile文件

vim dockerfile 按i或o或a进入编辑模式,dockerfile文本内容如下:

FROM 10.124.129.165:5200/xxxx//jre:v1.8
ENV LANG en_US.UTF-8
ENV LANGUAGE en_US:en
ENV LC_ALL en_US.UTF-8

COPY xxx.jar xxx.jar   #前面是自己上传jar包名字,后面是你重命名的jar包名字,copy宿主机文件到镜像中
ENTRYPOINT ["java", "-jar", "xxx.jar"] #你重命名的jar包名字

按Esc退出编辑模式,输入 :wq 保存退出 :q! 不保存退出

(3)制作镜像

docker build 命令用于使用 dockerfile文件创建镜像。

-f :指定要使用的dockerfile文件路径;
-t:容器名字,冒号前面是自定义REPOSITORY镜像名,注意不能大写:冒号后面自定义tag版本号如以年月日命名

docker build -f ./dockerfile -t xxx:xxxx .  <----注意后面必须有一个.

制作完成,查看镜像

docker image ls

 (4)启动容器


-p: 冒号前面8080是镜像端口(自定义linux宿主机端口):冒号后面对应8081是你项目端口号(自己上传jar包),将项目端口号映射到物理机linux宿主机端口

docker run -d -p 8080:8081 xxx:xxxx <----前面制作镜像的容器名字

 (5)访问自定义接口测试

浏览器访问:

http://localhost(当前docker节点IP):8080(当前docker节点端口,映射的Linux宿主机端口)/自定义接口地址

容器内使用curl测试同上

curl "http://localhost:5001/hello"

 (6)把镜像推上仓库

容器名字,冒号前面是自定义REPOSITORY镜像名,注意不能大写:冒号后面自定义tag版本号如以年月日命名

1.标记镜像为私有仓库的镜像

docker tag imageId(镜像的image  Id) xxx(私有仓库地址/容器名字)

示例:

docker tag ba3e4cc7cb1e 10.124.129.165:5200/xxxx/hello:20230515

2.把镜像推上仓库

docker push xxx(私有仓库地址/容器名字)

示例:

docker push 10.124.129.165:5200/xxxx/hello:20230515

3.打开浏览器输入地址回车:

http://10.124.129.165:5200/v2/_catalog

看到{"repositories":[这里有自己推送的URL后缀"xxxx/hello"即为成功!]}

http://私有仓库服务器ip:5000/v2/_catalog,看到
{"repositories":[]} 表示私有仓库 

(7)docker相关命令

重启docker

systemctl restart docker

再重启docker 容器

dockers start 容器id

查看所有容器(包括运行和未运行的)

docker ps -a (all的简写)

查看docker 容器控制台日志

docker logs -f containerId(容器id)

删除指定容器

docker rm containerId(容器id)

强制删除指定容器

docker rm -f containerId(容器id)

查看正在运行的容器

docker ps

查看最后一次运行的容器

docker ps -l

查看停止的容器

docker  ps -f status=exited

进入守护式容器(后台运行)

docker exec -it containerId(容器id) /bin/bash 

退出容器

exit

停止容器运行

docker stop containerId(容器id)

启动容器

docker start containerId(容器id)

容器信息

docker info

清理掉所有处于终止状态的容器

docker container prune

查看docker版本    
docker version

查看docker的状态

systemctl status docker

查看文件安装路径

whereis docker

查看运行文件所在的路径

which docker

查看端口是否被占用
netstat -ntulp | grep 8086

查看所有镜像

docker images

删除镜像

docker rmi imageId(镜像id)

强制删除镜像

docker image rm -f imageId(镜像id)

查看在运行的jar包

ps -x|grep demoA(jar包名)

拉取镜像 : Docker 仓库下载镜像到本地,镜像名称格式为 名称 : 版本号,如果版本号
不指定则是最新的版本。如果不知道镜像版本,可以去 docker hub 搜索对应镜像查看。
docker pull 镜像名称
docker pull redis #若没有指定版本,默认下载最新版本
docker pull redis:5.0 #下载指定的版本

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值