使用Dockerfile部署Java个人项目,并发布到Dockerhub

前置知识:Dockerfile的编写

Docker 基础之Dockerfile命令详解 ,后面也会解释一些Dockerfile命令的使用。

一、使用Dockerfile部署Java个人项目

本来想在一个CentOS容器内,同时开MySQL进程和Java进程,但是后来从网上看到一段话(李昊轩的博客):

遵循单一原则,一个容器只运行一个主进程。多个进程都部署在一个容器中,弊端很多。比如更新某个进程的镜像时,其他进程也会被迫重启,如果一个进程出问题导致容器挂了,所有进程都将无法访问。再根据官网的提倡的原则而言。容器 = 应用 + 依赖的执行环境而不是像虚拟机一样,把一堆进程都部署在一起。

因此只能放弃原先的方法,将数据库单独放在一个服务器里,只在Docker里面发布Jar进程。

下面是Dockerfile的编写:

FROM java:8
LABEL Creator="daji"
LABEL description="DajiBlog_SpringBoot_Docker"

# 指定工作目录,就是/root
ENV MYPATH /root
WORKDIR $MYPATH

# 复制你的jar包到工作目录
COPY *.jar $MYPATH/DajiBlog.jar

# 指定端口8080
CMD ["--server.port=8080"]

# 创建存放日志的文件 RUN指令可以有多条,就像你在linux终端输入指令一样
RUN touch log.log

# 暴露端口8080,后续还要暴露3306
EXPOSE 8080

# 指定最后执行的命令:java -jar DajiBlog.jar > log.log &
# 该命令意为:后台启动jar包,并将日志输出至刚刚创建的存放日志的文件。这个命令里好像不能用$MYPATH,用了就报错
# 可以使用 docker logs 容器名 来看该容器输出的日志。(输入参数-f是持续查看)
ENTRYPOINT ["java","-jar","DajiBlog.jar",">","log.log","&"]

cd到Dockerfile所在的路径,在终端执行命令:docker build -f Dockerfile -t dajiblog:1.0 .可以构建镜像;

在终端执行命令: docker run -d --name dajiblog01 -p 20001:8080 dajiblog:1.0可以启动该镜像,把主机的端口20001链接到容器端口8080.

在终端执行命令:docker logs -f dajiblog01可以查看该容器输出的日志

执行完毕后,输入ip地址+端口号,访问你部署的Java个人项目,如果访问成功,那么就说明部署成功了

二、发布你的Docker镜像到Dockerhub

首先在Dockerhub上注册你的账号:https://hub.docker.com/
然后进入终端,输入命令:docker login -u 你的用户名

登陆成功后,在推送前,必须将你的镜像命名规范格式,否则会失败。输入如下命令 :
docker tag 镜像id 你的docker账户名/新的镜像名:版本号
例:docker tag c3e2d1273618 dajitop/dajiblog:1.0

规范格式后可以推送镜像:docker push 用户名/镜像名:标签(版本号)
例:docker push dajitop/dajiblog:1.0

[root@iZuf6f6nspevrmhaq7hn23Z dockerfileforDajiblog]# docker push dajitop/dajiblog:1.0
The push refers to repository [docker.io/dajitop/dajiblog]
7c4fef873c58: Pushed 
ec800912f8bd: Pushed 
35c20f26d188: Mounted from library/java 
c3fe59dd9556: Mounted from library/java 
6ed1a81ba5b6: Mounted from library/java 
a3483ce177ce: Mounted from library/java 
ce6c8756685b: Mounted from library/java 
30339f20ced0: Mounted from library/java 
0eb22bfb707d: Mounted from library/java 
a2ae92ffcd29: Mounted from library/java 
1.0: digest: sha256:3a8024d82a4ff284143df7952520419b7bdd0a6a46e0a5861d1f6b5e894e7def size: 2419

push成功之后,登录https://hub.docker.com/,你就可以查看到你刚push上去的镜像了:
在这里插入图片描述
如果你想在别的终端Linux上面下载你的镜像,只需要docker pull 你的镜像名即可。例:

[root@iZuf6f6nspevrmhaq7hn23Z dockerfileforDajiblog]# docker pull dajitop/dajiblog:1.0
1.0: Pulling from dajitop/dajiblog
5040bd298390: Already exists 
fce5728aad85: Already exists 
76610ec20bf5: Already exists 
60170fec2151: Already exists 
e98f73de8f0d: Already exists 
11f7af24ed9c: Already exists 
49e2d6393f32: Already exists 
bb9cdec9c7f3: Already exists 
b52b27b4154b: Pull complete 
b9717b5af332: Pull complete 
Digest: sha256:3a8024d82a4ff284143df7952520419b7bdd0a6a46e0a5861d1f6b5e894e7def
Status: Downloaded newer image for dajitop/dajiblog:1.0
docker.io/dajitop/dajiblog:1.0

执行完毕后,查看你的镜像列表,发现已经下载下来了:
在这里插入图片描述
完成!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值