在 macOS X 上设置开发环境
可以使用 macOS X 生成在 Linux 群集上运行的 Azure Service Fabric 应用程序。本文档介绍了如何设置用于开发的 Mac。
先决条件
Azure Service Fabric 不在 macOS X 上本机运行。为了运行本地 Service Fabric 群集,我们提供了预配置的 Docker 容器映像。 准备工作:
创建本地容器和设置 Service Fabric
若要设置本地 Docker 容器并在其上运行 Service Fabric 群集,请执行以下步骤:
使用以下设置更新主机上的 Docker 守护程序配置并重启 Docker 守护程序:
{ "ipv6": true, "fixed-cidr-v6": "fd00::/64" }
可以在 Docker 安装路径的 daemon.json 文件中直接更新这些设置。 可直接在 Docker 中修改守护程序配置设置。 选择 Docker 图标,然后选择“首选项”>“守护程序”>“高级”。
注意
建议直接在 Docker 中修改守护程序,因为 daemon.json 文件的位置可能会因计算机而异。 例如,~/Library/Containers/com.docker.docker/Data/database/com.docker.driver.amd64-linux/etc/docker/daemon.json。
提示
测试大型应用程序时,我们建议增加分配给 Docker 的资源。 为此,可以选择 Docker 图标,然后选择“高级”来调整核心数量和内存量。
启动群集。
最新版本:
docker run --name sftestcluster -d -v /var/run/docker.sock:/var/run/docker.sock -p 19080:19080 -p 19000:19000 -p 25100-25200:25100-25200 mcr.microsoft.com/service-fabric/onebox:latest
Ubuntu 18.04 LTS:
docker run --name sftestcluster -d -v /var/run/docker.sock:/var/run/docker.sock -p 19080:19080 -p 19000:19000 -p 25100-25200:25100-25200 mcr.microsoft.com/service-fabric/onebox:u18
提示
默认情况下,这样会拉取具有最新 Service Fabric 版本的映像。 对于特定的修订版本,请访问 Docker Hub 上的 Service Fabric Onebox 页。
可选:构建扩展的 Service Fabric 映像。
在新目录中创建名为
Dockerfile
的文件,以构建自定义映像:注意
可以使用 Dockerfile 修改上面的映像,以将其他程序或依赖项添加到容器中。 例如,添加
RUN apt-get install nodejs -y
可以支持将nodejs
应用程序用作来宾可执行文件。FROM mcr.microsoft.com/service-fabric/onebox:u18 RUN apt-get install nodejs -y EXPOSE 19080 19000 80 443 WORKDIR /home/ClusterDeployer CMD ["./ClusterDeployer.sh"]
提示
默认情况下,这样会拉取具有最新 Service Fabric 版本的映像。 如需特定的修订版本,请访问 Docker 中心页。
若要通过
Dockerfile
生成可重用的映像,请打开终端并使用cd
直接切换到Dockerfile
所在的目录,然后运行:docker build -t mysfcluster .
注意
此操作需要一段时间,但只需执行一次。
现在,每当有需要时,都可以运行以下命令,快速启动 Service Fabric 的本地副本:
docker run --name sftestcluster -d -v /var/run/docker.sock:/var/run/docker.sock -p 19080:19080 -p 19000:19000 -p 25100-25200:25100-25200 mysfcluster
提示
为容器实例提供一个名称,以更具可读性的方式对其进行处理。
如果应用程序正在侦听特定端口,则必须使用附加的
-p
标记指定这些端口。 例如,如果应用程序正在侦听端口 8080,请添加下面的-p
标记:docker run -itd -p 19000:19000 -p 19080:19080 -p 8080:8080 --name sfonebox mcr.microsoft.com/service-fabric/onebox:u18
群集需要一小段时间来启动。 运行群集时,可以使用以下命令来查看日志,或者跳转到仪表板来查看群集运行状况:
http://localhost:19080
docker logs sftestcluster
若要停止并清理容器,请使用以下命令。 但是,我们将在下一步中使用此容器。
docker rm -f sftestcluster
已知限制
以下是在 Mac 的容器中运行的本地群集的已知限制:
- DNS 服务未运行,并且目前在容器中不受支持。 问题 #132
- 运行基于容器的应用需要在 Linux 主机上运行 SF。 当前不支持嵌套容器应用程序。
在 Mac 上设置 Service Fabric CLI (sfctl)
按照 Service Fabric CLI 中的说明在 Mac 上安装 Service Fabric CLI (sfctl
)。
CLI 命令支持与 Service Fabric 实体(包括群集、应用程序和服务)交互。
- 若要在部署应用程序之前连接到群集,请运行以下命令。
sfctl cluster select --endpoint http://localhost:19080
使用 Yeoman 在 Mac 上创建应用程序
Service Fabric 提供基架工具,可以借助此类工具,使用 Yeoman 模板生成器从终端创建 Service Fabric 应用程序。 执行以下步骤,确保已经有可以在计算机上运行的 Service Fabric Yeoman 模板生成器:
Node.js 和 Node 包管理器必须安装在 Mac 上。 此软件可以使用 HomeBrew 进行安装,如下所示:
brew install node node -v npm -v
通过节点包管理器在计算机上安装 Yeoman 模板生成器:
npm install -g yo
请按入门文档中的步骤,安装首选的 Yeoman 生成器。 若要使用 Yeoman 来创建 Service Fabric 应用程序,请执行以下步骤:
npm install -g generator-azuresfjava # for Service Fabric Java Applications npm install -g generator-azuresfguest # for Service Fabric Guest executables npm install -g generator-azuresfcontainer # for Service Fabric Container Applications
安装生成器后,可通过运行
yo azuresfguest
或yo azuresfcontainer
分别创建来宾可执行文件或容器服务。若要在 Mac 上生成 Service Fabric Java 应用程序,必须在主机上安装 JDK 1.8 和 Gradle。 此软件可以使用 HomeBrew 进行安装,如下所示:
brew update brew cask install java brew install gradle
重要
brew cask install java
的当前版本可能会安装更新版本的 JDK。 请确保安装 JDK 8。
通过 Terminal 在 Mac 上部署应用程序
创建和生成 Service Fabric 应用程序以后,即可使用 Service Fabric CLI 部署该应用程序:
连接到在 Mac 的容器实例中运行的 Service Fabric 群集:
sfctl cluster select --endpoint http://localhost:19080
从项目目录中运行安装脚本:
cd MyProject bash install.sh
设置 .NET Core 3.1 开发
安装用于 Mac 的 .NET Core 3.1 SDK,开始创建 C# Service Fabric 应用程序。 .NET Core Service Fabric 应用程序包在 NuGet.org 上托管。
在 Mac 上为 Eclipse 安装 Service Fabric 插件
Azure Service Fabric 为适用于 Java IDE 的 Eclipse Neon(或更高版本)提供插件。 该插件可简化创建、生成和部署 Java 服务的过程。 若要为 Eclipse 安装 Service Fabric 插件或将其更新到最新版本,请执行这些步骤。 适用于 Eclipse 的 Service Fabric 文档中的其他步骤也适用:生成应用程序、向应用程序添加服务、卸载应用程序,等等。
最后一步是使用与主机共享的路径实例化该容器。 该插件需要此类实例化才能与 Mac 上的 Docker 容器配合使用。 例如:
docker run -itd -p 19080:19080 -v /Users/sayantan/work/workspaces/mySFWorkspace:/tmp/mySFWorkspace --name sfonebox mcr.microsoft.com/service-fabric/onebox:latest
这些属性定义如下:
/Users/sayantan/work/workspaces/mySFWorkspace
是 Mac 上的工作区的完全限定路径。/tmp/mySFWorkspace
是容器内部的路径,应将工作区映射到此路径。
注意
如果为工作区设置了其他名称/路径,请在 docker run
命令中更新这些值。
如果所启动容器的名称不是 sfonebox
,请在 Service Fabric 执行组件 Java 应用程序的 testclient.sh 文件中更新名称值。