IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 使用Dockerfile部署Java个人项目,并发布到Dockerhub -> 正文阅读

[系统运维]使用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

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

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-08-24 15:57:18  更:2021-08-24 16:00:58 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 11:24:06-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码