本地容器模式

在本地容器模式下,Cloud Toolkit插件将会在本地启动容器,并在容器中运行您的微服务应用。本文介绍如何配置本地容器模式。

前提条件

在使用本地容器模式前,请先完成如下配置:
  1. 安装Cloud Toolkit
  2. 配置阿里云账号
  3. 配置端云互联

背景信息

使用本地容器启动应用有如下优点:

  • 支持非Java语言。
  • 本地微服务应用可在更贴近生产环境的容器当中运行。

    比如,您本地使用Windows系统开发,但生产环境使用Linux系统运行应用,便可通过此模式在本地系统运行Linux容器并在容器中运行您的微服务应用。

整体运行架构如下:

本地容器运行模式架构图

步骤一:本地容器配置

  1. 启动IntelliJ IDEA。
  2. 在顶部菜单栏中选择Run > Edit Configurations...
  3. Run/Debug Configurations页面单击左侧的图标,在Add New Configuration小窗口中选择Alibaba Microservice Container,然后在右侧界面中配置本地容器相关参数。
    本地容器配置
    参数描述
    Name自定义本地容器名称。
    ServerDocker Daemon后台进程。Cloud Toolkit插件当前只支持使用本地Docker,此处默认为Local Docker Server,不可设置。
    Application Type选择应用类型。当选择镜像类型时,Cloud Toolkit插件会使用您定义的本地容器镜像来运行微服务容器。若选择其他类型,则会使用默认容器来运行您的微服务应用。
    • Java(通用Jar包):如您的应用为Java语言,使用Spring Cloud或Dubbo微服务框架,打包类型为JAR包,可选择此类型。
    • Tomcat(通用War包):如您的应用为Java语言,使用Dubbo或Spring Cloud微服务框架,打包类型为WAR包,可选择此类型。
    • HSF-Container(HSF类型Jar/War包):如您的应用为Java语言,使用HSF微服务框架,打包类型为JAR或WAR包,可选择此类型。
    • Image:运行自定义的微服务容器。
    Artifact选择微服务应用包来源,当应用类型为非镜像时此参数有效。当前支持以下两种方式:
    • Maven Build:在本地对相应服务模块进行Maven构建,使用构建所得到的包进行运行。使用此方式需要手动添加Maven构建任务,具体内容,请参见Maven Build构建任务说明
    • Use File:使用指定的本地文件作为应用包进行运行。
    Image ID or name自定义容器镜像ID或名称,当应用类型为镜像时此参数有效。
    Entrypoint容器镜像的入口点,当应用类型为镜像时此参数有效。若设置后,将覆盖自定义容器镜像中的入口点。
    Command容器镜像的命令,当应用类型为镜像时此参数有效。若设置后,将覆盖自定义容器镜像中的命令。
    Bind ports将宿主机的端口映射至容器内的端口,格式为<宿主机端口>:<容器端口>,多个端口映射使用空格分隔。设置此参数可使得在容器外通过宿主机端口来访问对应的容器内端口。
    说明 在默认情况下,CloudToolkit插件会暴露Spring Cloud服务端口和调试端口,无需在此处重复设置,请参见端口映射说明
    Bind mounts将宿主机的文件目录映射至容器内的文件目录,格式为<宿主机路径>:<容器路径>,多个路径映射使用空格分隔。设置此参数可使得宿主机和容器可共享相同的文件目录,并可分别进行读写。
    Environment variable设置容器的环境变量,格式为<Key>=<Value>,多个环境变量使用分号分隔。
    说明 在默认情况下,CloudToolkit插件会注入一些微服务相关参数至容器内,请参见微服务环境变量说明
  4. 配置完成后,单击OK,保存配置。

步骤二:运行容器

单击运行容器配置,如果当前为第一次运行,Cloud Toolkit插件会自动拉取底层所依赖的默认容器镜像和相关工具,此阶段稍做等待。等环境初始化后,应用启动日志如下:

运行容器

(可选)步骤三:调试Java应用

Cloud Toolkit插件会通过JAVA_TOOL_OPTIONS来启用Java应用调试,并暴露该调试端口至宿主机。调试端口默认为5005,如端口已被占用则依次往后顺延。

您可使用相关工具来连接该端口进行应用调试,也可使用IntelliJ IDEA中自带的Attatch debugger功能来进行调试:调试Java应用

端口映射说明

Cloud Toolkit插件会映射Java应用的调试端口和Spring Cloud服务端口至宿主机,详细说明如下:

  • Java调试端口:默认为5005,如已占用则依次往后顺延。此插件会通过JAVA_TOOL_OPTIONS参数注入调试信息,如使用非镜像类型启动容器,默认容器镜像会使用该调试信息运行您的微服务应用。如您采用自定义镜像类型来启动容器,请在您的启动脚本中使用该参数进行应用启动。
  • Spring Cloud服务端口:默认为8080,如已占用则依次往后顺延。此参数可通过端云互联配置中的本地SpringCloud服务端口进行覆盖。

微服务环境变量说明

Cloud Toolkit插件在启动时会注入如下环境变量至本地微服务容器中。如您使用非镜像类型启动,默认容器镜像的启动脚本会自动识别如下环境变量并启动;如您使用自定义镜像类型启动,可根据需要来使用这些环境变量。

环境变量名环境变量值
PRODUCT此环境变量标识当前运行环境的云产品类型,可选择EDAS、SAE或MSE 。
JAVA_TOOL_OPTIONS-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=<调试端口>,其中调试端口默认为5005,如5005已被占用则依次往后顺延。
ADDRESS_SERVER_HOST地址服务器地址。
ADDRESS_SERVER_PORT地址服务器端口。
ACCESS_KEY命名空间AccessKey ID。
SECRET_KEY命名空间AccessKey Secret。
TENANT_ID命名空间ID。
SUB_ONLY当在端云互联中设置只订阅不注册时,此参数值为true。
PROJECT_NAME本地微服务归属的应用ID。
REMOTE_IP远端中间代理的内网IP,默认取其eth0网卡IP。

Maven Build构建任务说明

如果您选择以Maven Build方式来构建微服务应用包,则需在容器配置中添加相应的Maven构建任务。具体操作如下:

  1. 在本地容器配置中单击Before launch区域的+图标,在弹出的功能列表中选择Run Maven Goal
  2. 在弹出的Select Maven Goal对话框中,设置Maven构建任务所对应的模块和执行命令。
    Maven Build构建任务

    如果您当前的项目工程中包含多个模块,则建议依次添加以下构建任务:

    1. 添加对项目父级Maven工程的clean install构建任务。
    2. 添加对目标子模块工程的clean package构建任务。Cloud Toolkit插件将会使用此子模块工程所构建的包来进行运行。