Я пытаюсь запустить прототип развертывания микросервиса (на данный момент только для целей НИОКР).Я создал очень простую конечную точку API и использовал docker-compose в visual studio для создания контейнера.Код API выглядит следующим образом:
[RoutePrefix("api/test")]
public class TestController : ApiController
{
[HttpGet]
[Route("")]
public HttpResponseMessage Get()
{
HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.OK, "Microservice Test Successful 2");
return response;
}
}
И развернутый контейнер содержит следующие данные (вторые в списке):
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
31d4d7f15d3e testmicroservice:latest "C:\\ServiceMonitor.e…" 16 hours ago Up 16 hours testservice.1.ttt25efcq418xbsu7vqksl94p
816c526ef9f3 testmicroservice "cmd /c 'start /B C:…" 16 hours ago Up 16 hours 0.0.0.0:8785->80/tcp dockercompose2417227251495589316_gdms.testmicroservice_1
Я могу очень весело получить доступ к этому в своем браузерена опубликованном порту и получите ожидаемый результат от API:
Я попытался развернуть этот же образ в качестве службы докера (с помощью роя)режим активен в Docker) и назначен другой порт для доступа к нему:
ID NAME MODE REPLICAS IMAGE PORTS
m3wfea6n9anl testservice replicated 1/1 testmicroservice:latest *:5050->80/tcp
Служба, похоже, работает правильно, и контейнер для этой задачи также работает нормально (это первый издва контейнера из приведенного выше фрагмента.
По какой-то причине, когда я пытаюсь получить доступ к той же конечной точке, но с новым портом (снова на локальном хосте в моем браузере), я не могу подключиться.
Полная информация о сервисе докера приведена ниже.
[
{
"ID": "m3wfea6n9anligjrrihbi03vt",
"Version": {
"Index": 500
},
"CreatedAt": "2018-10-04T16:19:17.2891599Z",
"UpdatedAt": "2018-10-04T16:19:17.2921526Z",
"Spec": {
"Name": "testservice",
"Labels": {},
"TaskTemplate": {
"ContainerSpec": {
"Image": "testmicroservice:latest",
"Init": false,
"StopGracePeriod": 10000000000,
"DNSConfig": {},
"Isolation": "default"
},
"Resources": {
"Limits": {},
"Reservations": {}
},
"RestartPolicy": {
"Condition": "any",
"Delay": 5000000000,
"MaxAttempts": 0
},
"Placement": {},
"ForceUpdate": 0,
"Runtime": "container"
},
"Mode": {
"Replicated": {
"Replicas": 1
}
},
"UpdateConfig": {
"Parallelism": 1,
"FailureAction": "pause",
"Monitor": 5000000000,
"MaxFailureRatio": 0,
"Order": "stop-first"
},
"RollbackConfig": {
"Parallelism": 1,
"FailureAction": "pause",
"Monitor": 5000000000,
"MaxFailureRatio": 0,
"Order": "stop-first"
},
"EndpointSpec": {
"Mode": "vip",
"Ports": [
{
"Protocol": "tcp",
"TargetPort": 80,
"PublishedPort": 5050,
"PublishMode": "ingress"
}
]
}
},
"Endpoint": {
"Spec": {
"Mode": "vip",
"Ports": [
{
"Protocol": "tcp",
"TargetPort": 80,
"PublishedPort": 5050,
"PublishMode": "ingress"
}
]
},
"Ports": [
{
"Protocol": "tcp",
"TargetPort": 80,
"PublishedPort": 5050,
"PublishMode": "ingress"
}
],
"VirtualIPs": [
{
"NetworkID": "ylj65tghq4ek1ewmtysaitmcx",
"Addr": "10.255.0.31/16"
}
]
}
}
]
Докер-файл для изображения выглядит так:
FROM microsoft/aspnet:4.7.2-windowsservercore-1709
ARG source
WORKDIR /inetpub/wwwroot
COPY ${source:-obj/Docker/publish} .
Любые предложения относительно того, что я, возможно, пропустил, были бы хорошими.