2017-02-23 27 views
1

Я изучаю учебное пособие по this и пытаюсь установить простую базовую программу ASP.Net для службы контейнеров EC2. Я добираюсь до конца, но не могу запустить свой контейнер. Когда я ввожу:.Net Core с Docker на проблемах с учебным курсом EC2

docker run 171329494690.dkr.ecr.us-west-2.amazonaws.com/ecsdemo-redisgeo:latest 

запустить контейнер вручную я получаю следующие ошибки:

Project RedisGeo.ServiceModel (.NETStandard,Version=v1.6) was previously compiled. Skipping compilation. 
Project RedisGeo.ServiceInterface (.NETStandard,Version=v1.6) was previously compiled. Skipping compilation. 
Project RedisGeo (.NETCoreApp,Version=v1.0) was previously compiled. Skipping compilation. 
fail: ServiceStack.Redis.RedisNativeClient[0] 
     Could not connect to redis Instance at localhost:6379 
fail: ServiceStack.Redis.RedisNativeClient[0] 
     Could not connect to redis Instance at localhost:6379 
fail: ServiceStack.Redis.RedisNativeClient[0] 
     localhost:6379 

Unhandled Exception: ServiceStack.Redis.RedisException: localhost:6379 ---> System.Net.Internals.SocketExceptionFactory+ExtendedSocketException: Connection refused 127.0.0.1:6379 
    at System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress) 
    at System.Net.Sockets.Socket.Connect(EndPoint remoteEP) 
    at System.Net.Sockets.Socket.Connect(IPAddress address, Int32 port) 
    at ServiceStack.Redis.RedisNativeClient.Connect() in /opt/lib/teamcity-agent/work/8dcfdcec54d0f21a/src/ServiceStack.Redis/RedisNativeClient_Utils.cs:line 212 
    at ServiceStack.Redis.RedisNativeClient.AssertConnectedSocket() in /opt/lib/teamcity-agent/work/8dcfdcec54d0f21a/src/ServiceStack.Redis/RedisNativeClient_Utils.cs:line 257 
    --- End of inner exception stack trace --- 
    at ServiceStack.Redis.RedisNativeClient.AssertConnectedSocket() in /opt/lib/teamcity-agent/work/8dcfdcec54d0f21a/src/ServiceStack.Redis/RedisNativeClient_Utils.cs:line 273 
    at ServiceStack.Redis.RedisNativeClient.AssertServerVersionNumber() in /opt/lib/teamcity-agent/work/8dcfdcec54d0f21a/src/ServiceStack.Redis/RedisNativeClient_Utils.cs:line 47 
    at ServiceStack.Redis.RedisClient.GetServerRole() in /opt/lib/teamcity-agent/work/8dcfdcec54d0f21a/src/ServiceStack.Redis/RedisClient.cs:line 1092 
    at ServiceStack.Redis.RedisResolver.CreateRedisClient(RedisEndpoint config, Boolean master) in /opt/lib/teamcity-agent/work/8dcfdcec54d0f21a/src/ServiceStack.Redis/RedisResolver.cs:line 84 
    at ServiceStack.Redis.RedisManagerPool.GetClient() in /opt/lib/teamcity-agent/work/8dcfdcec54d0f21a/src/ServiceStack.Redis/RedisManagerPool.cs:line 194 
    at RedisGeo.AppHost.ImportCountry(IRedisClientsManager redisManager, String countryCode) in /app/RedisGeo/AppHost.cs:line 35 
    at RedisGeo.AppHost.Configure(Container container) in /app/RedisGeo/AppHost.cs:line 30 
    at ServiceStack.ServiceStackHost.Init() in /opt/lib/teamcity-agent/work/d09206570215629/src/ServiceStack/ServiceStackHost.cs:line 189 
    at ServiceStack.NetCoreAppHostExtensions.UseServiceStack(IApplicationBuilder app, AppHostBase appHost) in /opt/lib/teamcity-agent/work/d09206570215629/src/ServiceStack/AppHostBase.NetCore.cs:line 178 
    at RedisGeo.Startup.Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) in /app/RedisGeo/Startup.cs:line 27 
--- End of stack trace from previous location where exception was thrown --- 
    at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 
    at Microsoft.AspNetCore.Hosting.ConventionBasedStartup.Configure(IApplicationBuilder app) 
    at Microsoft.AspNetCore.Hosting.Internal.WebHost.BuildApplication() 
    at Microsoft.AspNetCore.Hosting.WebHostBuilder.Build() 
    at RedisGeo.Program.Main(String[] args) in /app/RedisGeo/Program.cs:line 14 

Любая помощь будет оценена, я новичок в АМС так, пожалуйста, дайте мне знать, если я могу предоставить дополнительную информацию.

Это мой докер файл:

FROM microsoft/dotnet:1.1-sdk-projectjson 
COPY src /app 
WORKDIR /app 
RUN ["dotnet", "restore"] 
WORKDIR /app/RedisGeo 
RUN ["dotnet", "build"] 
EXPOSE 5000/tcp 
ENV ASPNETCORE_URLS https://*:5000 
ENTRYPOINT ["dotnet", "run", "--server.urls", "http://*:5000"] 

Когда я запускаю следующую команду docker ps --format "{{.ID}}: {{.Status}} {{.Command}} {{.Ports}}" я получаю следующий выход из запущенных докеров контейнеров

8285b5479401: Up 22 hours "/agent" 
ba110a5f14ef: Up 46 hours "/app/docker-entrypoi" 0.0.0.0:80->80/tcp, 443/tcp 

определение ecsdemo-redisgeo контейнер задача

enter image description here

enter image description here

+0

У меня такая же проблема, я начал с того же учебника, что и вы, и я получил ту же ошибку, я ценю, если вы поделитесь своим решением с ней, если найдете что-нибудь! –

+0

Я не нашел решение и припарковал его сейчас, я отправлю решение, как только вернусь к нему, удачи :) – Ruskin

ответ

0
Connection refused 127.0.0.1:6379 

Эта ошибка указывает на то, что нет ни одного случая Redis сервера доступны на 127.0.0.1:6379.

Убедитесь, что ваше определение task.json совпадает с ECS task-definition.json, которое включает определение контейнера ${IMAGE_NAME}-redis, в котором ECS также предложит развернуть экземпляр Docker для redis-сервера с вашим приложением. Вы можете найти сценарии, используемые для развертывания приложения redis-geo по адресу redis-geo/scripts.

Имя хоста для экземпляра Redis сервер доступен из REDIS_HOST Environment Variable, который вы должны use in your App, когда она существует, например:

container.Register<IRedisClientsManager>(c => 
    new RedisManagerPool(AppSettings.Get("REDIS_HOST", defaultValue:"localhost"))); 
+0

Я не изменил определение задачи. Независимо от того, что вы упомянули, все в игре, учитывая учебное пособие, которое я последовал. Все, что я изменил, это «deploy-envs.sh», как указано в уроке. Я немного потерян, когда будет запущен «redis-server»? Когда я начинаю свою задачу или до этого? – Ruskin

+0

@Ruskin он развернут вместе как атомная единица с вашим приложением, так как все это содержится в одной и той же задаче определения. Json – mythz

+0

Точно правильно :), вот что заводит мою голову ... почему он не запускает сервер redis когда мое приложение запущено? Любые другие журналы, которые я могу предоставить, чтобы помочь мне дальше? – Ruskin

0

Я была такая же проблема, когда я пытался разработать учебник, после того, как пару проб и ошибок, в конечном итоге мне удалось заставить его работать, просто удалив следующую запись из моего файла task-definition.json.

{ 
        "name": "SERVICESTACK_LICENSE", 
        "value": "${SERVICESTACK_LICENSE}" 
       }, 

причина оно не было, потому что у меня не было ни с одной записью для этого в Трэвис и я предполагаю, что он не мог читать REDIS_HOST, который был там сразу после этого.

Смежные вопросы