.Net内核与Docker关于EC2的教程问题
我正在学习教程,并试图在EC2容器服务上安装一个简单的ASP.Net核心应用程序。我快到终点了,但我的容器还没开始。当我输入时:.Net内核与Docker关于EC2的教程问题,docker,amazon-ec2,asp.net-core,Docker,Amazon Ec2,Asp.net Core,我正在学习教程,并试图在EC2容器服务上安装一个简单的ASP.Net核心应用程序。我快到终点了,但我的容器还没开始。当我输入时: docker run 171329494690.dkr.ecr.us-west-2.amazonaws.com/ecsdemo-redisgeo:latest 要手动运行容器,我会遇到以下错误: Project RedisGeo.ServiceModel (.NETStandard,Version=v1.6) was previously compiled.
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
任何帮助都将不胜感激,我是AWS的新手,所以如果我能提供更多信息,请让我知道
这是我的docker文件:
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}}”时
我得到当前运行的docker容器的以下输出
8285b5479401: Up 22 hours "/agent"
ba110a5f14ef: Up 46 hours "/app/docker-entrypoi" 0.0.0.0:80->80/tcp, 443/tcp
ecsdemo redisgeo任务容器定义
此错误表示127.0.0.1:6379
上没有可用的Redis服务器实例
确保您的task-definition.json与包含${IMAGE\u NAME}-redis
容器定义的相同,该容器定义将告诉ECS也在您的应用程序中部署redis server Docker实例。您可以在上找到用于部署redis geo应用程序的脚本
redis服务器实例的主机名可以访问,当它存在时,您应该从该主机名访问,例如:
container.Register<IRedisClientsManager>(c =>
new RedisManagerPool(AppSettings.Get("REDIS_HOST", defaultValue:"localhost")));
container.Register(c=>
新的RedisManagerPool(AppSettings.Get(“REDIS_HOST”,defaultValue:“localhost”));
此错误表示127.0.0.1:6379
上没有可用的Redis服务器实例
确保您的task-definition.json与包含${IMAGE\u NAME}-redis
容器定义的相同,该容器定义将告诉ECS也在您的应用程序中部署redis server Docker实例。您可以在上找到用于部署redis geo应用程序的脚本
redis服务器实例的主机名可以访问,当它存在时,您应该从该主机名访问,例如:
container.Register<IRedisClientsManager>(c =>
new RedisManagerPool(AppSettings.Get("REDIS_HOST", defaultValue:"localhost")));
container.Register(c=>
新的RedisManagerPool(AppSettings.Get(“REDIS_HOST”,defaultValue:“localhost”));
我在尝试开发教程时遇到了同样的问题,经过几次尝试和失败,最终我成功地通过从task-definition.json文件中删除以下条目使其正常工作
{
"name": "SERVICESTACK_LICENSE",
"value": "${SERVICESTACK_LICENSE}"
},
它失败的原因是因为我在travis中没有这方面的任何条目,并且我猜它无法读取紧随其后的REDIS_主机。我在编写教程时也遇到了同样的问题,经过几次尝试和失败后,我最终通过从我的task-definition.json文件中删除以下条目使它工作
{
"name": "SERVICESTACK_LICENSE",
"value": "${SERVICESTACK_LICENSE}"
},
它失败的原因是因为我在travis中没有这方面的任何条目,我猜它无法读取紧接着的REDIS_主机。我没有更改任务定义。根据我遵循的教程,您提到的内容都在发挥作用。我所做的更改是
deployenvs.sh
,如教程所示。我有点不知所措,什么时候部署redis服务器
?当我开始我的任务或之前?@Ruskin它作为一个原子单元与你的应用程序一起部署,因为它都包含在同一个任务定义中。jsone完全正确:),这就是我的想法……为什么在我的应用程序运行时它不启动redis服务器?我还可以提供其他日志来进一步帮助我吗?@Ruskin你可以,否则我只需从头开始,按照指南重新开始,重新阅读是一次很好的学习体验。我已经编辑了我的原始问题,以包含这些信息。我同意我可以再次运行它,但我真的想提高我的AWS故障排除技能,并希望借此机会做到这一点,我没有改变任务定义。根据我遵循的教程,您提到的内容都在发挥作用。我所做的更改是deployenvs.sh
,如教程所示。我有点不知所措,什么时候部署redis服务器
?当我开始我的任务或之前?@Ruskin它作为一个原子单元与你的应用程序一起部署,因为它都包含在同一个任务定义中。jsone完全正确:),这就是我的想法……为什么在我的应用程序运行时它不启动redis服务器?我还可以提供其他日志来进一步帮助我吗?@Ruskin你可以,否则我只需从头开始,按照指南重新开始,重新阅读是一次很好的学习体验。我已经编辑了我的原始问题,以包含这些信息。我同意,我可以再次运行它,但我真的想提高我的AWS故障排除技能,并希望借此机会做到这一点。我也有同样的问题,我从与您相同的教程开始,我得到了相同的错误,如果您发现任何问题,我感谢您分享您的解决方案!我还没有找到解决方案,现在已经把它停好了,我会在返回后发布解决方案,祝你好运:)我也有同样的问题,我和你一样从同一个教程开始,我也有同样的错误,如果你发现了,如果你能分享你的解决方案,我将不胜感激!我还没有找到解决方案,目前已将其停放,我将在返回后发布解决方案,祝您好运:)