10 分钟将本地项目部署到 Docker
前言
很多公司目前发布上线的时候还是手动将 jar 包打好,然后用 Java 命令行去启动,包括我现在所在的公司。这样做无疑是加大了人工成本,这次我打算利用 Idea 中的官方 Docker 插件,快速将本地项目发布到服务器的 Docker 并部署,同时集成后续持续更新的操作
安装 Docker 插件
首先我们得确保 Idea 中具有 Docker 插件,在插件列表中搜索 Docker
,如果有下方这个插件我们则继续
DockerFile
DockerFile 是 Docker 中构建镜像的脚本文件,包含一系列的指令和配置,用来描述如何构建和配置 Docker 容器,我先简单介绍一下 DockerFile 中的常用命令,以命令(示例):详情
的格式进行介绍
FROM(FROM java:7):基础镜像,构建的起点
COPY(COPY file /usr/local):将本地文件复制到镜像中的指定位置
ADD(ADD pom.xml/usr/local):将本地文件添加到 Docker 镜像中,这里要注意和 COPY 的区别,如果 ADD 移动的是压缩文件则会自动解压缩,COPY 则不会
WORKDIR(WORKDIR /usr/local):指定工作目录,指定目录之后后续的所有命令都会在该目录下执行
RUN(RUN apt-get update):一般 RUN 命令是在镜像构建期间在容器内执行的,例如安装软件包,下载文件,每执行一次 RUN 命令都会在镜像中创建一个新的中间层,RUN 命令可以被多次使用。所以我们尽量避免多个 RUN 命令。可以使用 && \ 来连接多个命令减少镜像层的创建
1
2 RUN apt-get update && \
apt-get install -y curlCMD(CMD [“RUN”,”-jar”,”application.jar”]):CMD 一般是容器启动的执行命令,不会改变 Docker 镜像的内容,DockerFile 中最多只能有一个 CMD 指令,如果有多个,则只有最后一个生效
完成 DockerFile 的指令
首先我们需要在项目跟目录创建一个文件,名字必须为 Dockerfile(注意大小写!!!)
在 DockerFile 中完成容器构建,因为我这里使用的是 java17 所以引入了 17,如果是 8 则可以使用 FROM java:8
完成引入,接着我指定工作目录为 /usr/local,表示之后的命令都在该目录下完成,使用 ADD 命令,将我们本地的 jar 包指定到工作目录 ‘. 表示工作目录’ 最后用 CMD 命令启动 jar 包,同时因为我的项目端口号是 1234,使用 EXPOSE 告诉 Docker 容器监听这个端口。
1 | FROM openjdk:17-oracle |
PS:关于 jar 包的名字可以在 pom.xml 中指定,使用 finalName 指定 jar 包名字
Idea 连接 Docker
这里我的 Idea 版本 23.1 版本的新 UI。连接 Docker 的位置是在服务选项卡中,有个 + 号,我们需要新建一个 Docker 连接
共有三种方式连接到 Docker,第一个是连接到我们本地的 Docker,第二个是 TCP 连接,第三个则是 SSH。大家根据需求选择对应的连接方式。
这里我连接了一个本地的一个服务器上的,连接完成我们就可以准备创建容器了
使用 Docker 插件创建容器
右键 DockerFile 修改运行配置
首先完成镜像标记,一般是作者/容器名称:版本号
构成,容器名称是自定义的
下面我们开始绑定端口,首先点运行右侧的修改,加入绑定端口,根据自己的项目端口号来映射到我们的宿主机上,例如这里我项目端口是 1234,我想把他映射到宿主机的 4444 端口就可以这样配置,配置完成之后点确定。
下面我们需要添加执行前打包的操作,点击加号,添加 maven 目标,命令行输入 package
应用即可。
完成后我们直接右键 Docker File,运行 DockerFile,他会开始编译打包运行,容器启动成功。
这里我使用 PostMan 测试访问一下 Docker 上的项目,成功打印日志,到此容器部署到 Docker 完成
项目持续更新部署
如果我们的代码更新了或者修改了一些东西,我们直接修改运行配置,可以更改一下版本后,然后重新 run 一遍 DockerFile 就可完成更新发布的操作
以上就是 Idea 搭配 Docker 快速部署项目的教程