Docker 二:IDEA + Docker 插件创建镜像并运行 spring boot 项目

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/aimeimeiTS/article/details/84134791

IDEA 上提供了 Docker integration 插件,可以很方便的管理镜像和容器,当然这些操作通过命令行也能完成,使用 IDEA 插件方式的另一个便利在于 IDEA 提供了 Docker 配套的 Configuration,可以一次性定义好操作序列,修改代码或资源后只需 Run/Debug Configuration 即可。

接下来直接通过示例项目介绍这些操作。

项目结构

  1. 网关项目:gateway
  2. pigeon RPC 服务项目:service-1
  3. pigeon RPC 服务项目:service-2

三个项目都为 spring boot 项目,pigeon 使用 zookeeper 做为注册中心,因此需要部署 zookeeper,此外还有 redis。

创建并运行 zookeeper 和 redis 的镜像

不确定 Docker Hub 仓库中是否存在镜像时可使用 docker search redis 进行检索。

docker pull zookeeper 
docker run -p 127.0.0.1:2181:2181 --name zookeeper -d zookeeper:latest

docker pull redis
docker run -p 127.0.0.1:6379:6379 --name redis -d redis:latest

Dockfile 文件编写

gateway 项目借助 maven 打成 war 包,两个 RPC 服务最终打成 jar 包。

pigeon 服务的 Dockerfile 文件

FROM frolvlad/alpine-oraclejdk8:slim
COPY target/service-1-1.0.0.jar app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
  • FROM 指定当前镜像基于哪一个镜像源
  • COPY 指定在 build 时将 Dockerfile 所在目录下的 target/service-1-1.0.0.jar 拷贝到镜像跟目录(类型 linux 文件目录)下,并重命名为 app.jar
  • ENTRYPOINT 指定镜像容器启动后执行命令 java -jar /app.jar

gateway 项目的 Dockfile 文件

FROM frolvlad/alpine-oraclejdk8:slim
COPY target/gateway-1-1.0.0.war appwjar
ENTRYPOINT ["java","-jar","/app.war"]

之后创建镜像时需要根据这三份文件进行创建。这里需要注意 gateway 项目的 pom 文件需要添加 `` 插件,否则 docker 中 java -jar /app.war 运行 war 包时会出错(提示没有“主清单属性”)。

docker build 创建镜像

执行 docker build 命令需要进入 Dockfile 所在目录,直接执行 docker build -t service-1:0.0.1 .,也可以指定 Dockerfile 绝对路径(文件夹层级即可)的方式进行构建:
docker build -t rh-service:0.0.1 G:/workspaces/work/service-1
image.png
命令执行成功后 IDEA 的 Docker 面板就会看到创建成功的镜像了。

docker run 创建并运行容器

docker run -p 127.0.0.1:8081:8081 --name service-1 -d service-1:0.0.1 java -jar /app.jar
docker run -p 127.0.0.1:9091:9091 --name service -2-d service-2:0.0.1 java -jar /app.jar

这两个为 pigeon 服务,网关项目借助 zookeeper 与其进行 RPC 通信,所以这里端口也可以随机映射到主机的高位端口:

docker run -P --name service-1 -d service-1:0.0.1 java -jar /app.jar
docker run -P --name service-2 -d service-2:0.0.1 java -jar /app.jar

网关项目需要外部进行访问,所以需要映射到主机的指定端口上:

docker run -p 127.0.0.1:8082:8082 --name gateway -d gateway:0.0.1 java -jar /app.war

借助 IDEA Configuration 一键运行项目

在 IDEA 中使用 Edit Configurations 创建 Docker 配置 。
image.png

选择 Dockerfile
image.png

进行如下配置
image.png
Dockerfile: 处选择自己的 Dockerfile 所在位置,Context folder 将会自动填充;image tag 一般由两部分构成:REPOSITORY:TAG(参考 docker ps命令显示的列表标题);勾选 Run build image,这样 Run/Debug 时在执行了 docker build 命令后,会继续执行 docker run 命令; Executable->Command 指定容器启动后执行命令;Bind ports 配置端口映射,Run options 可添加 -d 使容器在后台运行。

  • 注意在 Before lanuch 中配置 mvn install ,使用 maven 构建 jar(war) 包,这样 docker build 执行时使用的才会是最新的 target/service-1-1.0.0.jar 文件
  • Command previce 中可以看到当前配置将依次执行命令 docker builddocker run
  • 当点击 IDEA 的 Run/Debug

猜你喜欢

转载自blog.csdn.net/aimeimeiTS/article/details/84134791
今日推荐