Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.Net内核与Docker关于EC2的教程问题_Docker_Amazon Ec2_Asp.net Core - Fatal编程技术网

.Net内核与Docker关于EC2的教程问题

.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.

我正在学习教程,并试图在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. 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故障排除技能,并希望借此机会做到这一点。我也有同样的问题,我从与您相同的教程开始,我得到了相同的错误,如果您发现任何问题,我感谢您分享您的解决方案!我还没有找到解决方案,现在已经把它停好了,我会在返回后发布解决方案,祝你好运:)我也有同样的问题,我和你一样从同一个教程开始,我也有同样的错误,如果你发现了,如果你能分享你的解决方案,我将不胜感激!我还没有找到解决方案,目前已将其停放,我将在返回后发布解决方案,祝您好运:)