在 vespa 的同一个容器上部署多个应用程序包
Deploy multiple application package on same container in vespa
我已经从 git 克隆 https://github.com/vespa-engine/sample-apps.git 下载了示例 vespa 应用程序。我创建了与 basic-search 相同的应用程序,我将其命名为 location。现在我想使用以下步骤将这两个应用程序部署在同一个容器上:
要部署 basic-search 应用程序:
sudo docker 运行 --detach --name vespa1 --hostname vespa-container --privileged --volume $VESPA_SAMPLE_APPS:/vespa-sample-apps --发布 8080:8080 vespaengine/vespa
sudo docker exec vespa1 bash -c 'curl --head http://localhost:19071/ApplicationStatus'
sudo docker exec vespa1 bash -c '/opt/vespa/bin/vespa-deploy prepare /vespa-sample-apps/basic-search/src/main/application/ && /opt/vespa/bin/vespa-deploy activate'
curl -s --head http://localhost:8080/ApplicationStatus
部署位置应用程序:
sudo docker 运行 --detach --name vespa2 --hostname vespa-container --privileged --volume $VESPA_SAMPLE_APPS:/vespa-sample-apps --发表 8081:8081 vespaengine/vespa
sudo docker exec vespa2 bash -c 'curl --head http://localhost:19071/ApplicationStatus'
sudo docker exec vespa2 bash -c '/opt/vespa/bin/vespa-deploy prepare /vespa-sample-apps/location/src/main/application/ && /opt/vespa/bin/vespa-deploy activate'
curl -s --head http://localhost:8081/ApplicationStatus
第一个应用程序已成功部署,但在第二个应用程序中出现此错误:命令失败。找不到目录或 zip 文件:'/vespa-sample-apps/location/src/main/application/'
要完成这项工作,您需要使用 "baseport" 概念为每个应用程序的所有进程分配不同的端口。但是,为不同的应用程序使用不同的 Docker 容器要简单得多。这也提供了不同应用程序之间所需的资源隔离。
请注意,如果属于同一个应用程序的功能真的不同,您可以在同一个应用程序中(在同一个 services.xml 文件中)设置多个单独的集群,或者只添加多个模式等等相同的簇。
要部署第二个应用程序,我需要使用 8081|8080 发布它。因为 vespa-container 在 8080 上 运行 而我试图 运行 在 8081 port.After 运行 8081 在 localhost 和 vespa-container 在 8080 它 works.Now 我能够使用多个端口部署多个应用程序。
我已经从 git 克隆 https://github.com/vespa-engine/sample-apps.git 下载了示例 vespa 应用程序。我创建了与 basic-search 相同的应用程序,我将其命名为 location。现在我想使用以下步骤将这两个应用程序部署在同一个容器上:
要部署 basic-search 应用程序:
sudo docker 运行 --detach --name vespa1 --hostname vespa-container --privileged --volume $VESPA_SAMPLE_APPS:/vespa-sample-apps --发布 8080:8080 vespaengine/vespa
sudo docker exec vespa1 bash -c 'curl --head http://localhost:19071/ApplicationStatus'
sudo docker exec vespa1 bash -c '/opt/vespa/bin/vespa-deploy prepare /vespa-sample-apps/basic-search/src/main/application/ && /opt/vespa/bin/vespa-deploy activate'
curl -s --head http://localhost:8080/ApplicationStatus
部署位置应用程序:
sudo docker 运行 --detach --name vespa2 --hostname vespa-container --privileged --volume $VESPA_SAMPLE_APPS:/vespa-sample-apps --发表 8081:8081 vespaengine/vespa
sudo docker exec vespa2 bash -c 'curl --head http://localhost:19071/ApplicationStatus'
sudo docker exec vespa2 bash -c '/opt/vespa/bin/vespa-deploy prepare /vespa-sample-apps/location/src/main/application/ && /opt/vespa/bin/vespa-deploy activate'
curl -s --head http://localhost:8081/ApplicationStatus
第一个应用程序已成功部署,但在第二个应用程序中出现此错误:命令失败。找不到目录或 zip 文件:'/vespa-sample-apps/location/src/main/application/'
要完成这项工作,您需要使用 "baseport" 概念为每个应用程序的所有进程分配不同的端口。但是,为不同的应用程序使用不同的 Docker 容器要简单得多。这也提供了不同应用程序之间所需的资源隔离。
请注意,如果属于同一个应用程序的功能真的不同,您可以在同一个应用程序中(在同一个 services.xml 文件中)设置多个单独的集群,或者只添加多个模式等等相同的簇。
要部署第二个应用程序,我需要使用 8081|8080 发布它。因为 vespa-container 在 8080 上 运行 而我试图 运行 在 8081 port.After 运行 8081 在 localhost 和 vespa-container 在 8080 它 works.Now 我能够使用多个端口部署多个应用程序。