美文网首页
Docker 二:IDEA + Docker 插件创建镜像并运行

Docker 二:IDEA + Docker 插件创建镜像并运行

作者: DJN_ | 来源:发表于2018-11-15 15:09 被阅读0次

    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

    相关文章

      网友评论

          本文标题:Docker 二:IDEA + Docker 插件创建镜像并运行

          本文链接:https://www.haomeiwen.com/subject/ixtyfqtx.html