在本地容器模式下,Cloud Toolkit插件將會在本地啟動容器,并在容器中運行您的微服務應用。本文介紹如何配置本地容器模式。
前提條件
在使用本地容器模式前,請先完成如下配置:
背景信息
使用本地容器啟動應用有如下優點:
支持非Java語言。
本地微服務應用可在更貼近生產環境的容器當中運行。
比如,您本地使用Windows系統開發,但生產環境使用Linux系統運行應用,便可通過此模式在本地系統運行Linux容器并在容器中運行您的微服務應用。
整體運行架構如下:
步驟一:本地容器配置
啟動IntelliJ IDEA。
在頂部菜單欄中選擇 。
在Run/Debug Configurations頁面單擊左側的+圖標,在Add New Configuration小窗口中選擇Alibaba Microservice Container,然后在右側界面中配置本地容器相關參數。
參數
描述
Name
自定義本地容器名稱。
Server
Docker 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插件會注入一些微服務相關參數至容器內,請參見微服務環境變量說明。
配置完成后,單擊OK,保存配置。
步驟二:運行容器
單擊運行容器配置,如果當前為第一次運行,Cloud Toolkit插件會自動拉取底層所依賴的默認容器鏡像和相關工具,此階段稍作等待。等環境初始化后,應用啟動日志如下:
(可選)步驟三:調試Java應用
Cloud Toolkit插件會通過JAVA_TOOL_OPTIONS來啟用Java應用調試,并暴露該調試端口至宿主機。調試端口默認為5005,如端口已被占用則依次往后順延。
您可使用相關工具來連接該端口進行應用調試,也可使用IntelliJ IDEA中自帶的Attach debugger功能來進行調試:
端口映射說明
Cloud Toolkit插件會映射Java應用的調試端口和Spring Cloud服務端口至宿主機,詳細說明如下:
Java調試端口:默認為5005,如已占用則依次往后順延。此插件會通過JAVA_TOOL_OPTIONS參數注入調試信息,如使用非鏡像類型啟動容器,默認容器鏡像會使用該調試信息運行您的微服務應用。如您采用自定義鏡像類型來啟動容器,請在您的啟動腳本中使用該參數進行應用啟動。
Spring Cloud服務端口:默認為8080,如已占用則依次往后順延。此參數可通過端云互聯配置中的本地SpringCloud服務端口進行覆蓋。
微服務環境變量說明
Cloud Toolkit插件在啟動時會注入如下環境變量至本地微服務容器中。如您使用非鏡像類型啟動,默認容器鏡像的啟動腳本會自動識別如下環境變量并啟動;如您使用自定義鏡像類型啟動,可根據需要來使用這些環境變量。
環境變量名 | 環境變量值 |
PRODUCT | 此環境變量標識當前運行環境的云產品類型,可選擇EDAS、SAE或MSE 。 |
JAVA_TOOL_OPTIONS |
|
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構建任務。具體操作如下:
在本地容器配置中單擊Before launch區域的+圖標,在彈出的功能列表中選擇Run Maven Goal。
在彈出的Select Maven Goal對話框中,設置Maven構建任務所對應的模塊和執行命令。
如果您當前的項目工程中包含多個模塊,則建議依次添加以下構建任務:
添加對項目父級Maven工程的clean install構建任務。
添加對目標子模塊工程的clean package構建任務。Cloud Toolkit插件將會使用此子模塊工程所構建的包來進行運行。