在Linux上使用Docker进行Asp.Net 5.0开发

我可以成功地在Docker上安装并运行一个ASP.Net MVC应用程序https://github.com/aspnet/Home/tree/dev/samples/1.0.0-beta4/HelloMvc ,使用:

Dockerfile

FROM microsoft/aspnet COPY . /app WORKDIR /app RUN ["dnu", "restore"] EXPOSE 5004 ENTRYPOINT ["dnx", "." "kestrel"] 

build立

 docker build -t myapp . 

 docker run -t -d -p 80:5004 myapp 

Buildstep需要2分钟,这就是为什么我不想在开发过程中更改某些文件时运行所有步骤。 在docker中托pipe的运行时开发什么工作stream程? 或者docker工人是不是适合发展的环境?

编辑我复制应用程序的所有文件,包括docker文件“/ dev_app”更改为该目录并运行

  $ docker run -v /dev_app:/app -d -p 80:5004 myapp 

输出是容器的id

 docker ps 

不显示任何条目。 还有什么遗漏吗?

编辑2

执行

 docker log [myid] 

回报

  System.InvalidOperationException: Unable to resolve project 'app' from /app at Microsoft.Framework.Runtime.ApplicationHostContext..ctor (IServiceProvider serviceProvider, System.String projectDirectory, System.String packagesDirectory, System.String configuration, System.Runtime.Versioning.FrameworkName targetFramework, ICache cache, ICacheContextAccessor cacheContextAccessor, INamedCacheDependencyProvider namedCacheDependencyProvider, IAssemblyLoadContextFactory loadContextFactory, Boolean skipLockFileValidation) [0x00000] in <filename unknown>:0 at Microsoft.Framework.Runtime.DefaultHost.Initialize (Microsoft.Framework.Runtime.DefaultHostOptions options, IServiceProvider hostServices) [0x00000] in <filename unknown>:0 at Microsoft.Framework.Runtime.DefaultHost..ctor (Microsoft.Framework.Runtime.DefaultHostOptions options, IServiceProvider hostServices) [0x00000] in <filename unknown>:0 at Microsoft.Framework.ApplicationHost.Program.Main (System.String[] args) [0x00000] in <filename unknown>:0 at (wrapper managed-to-native) System.Reflection.MonoMethod:InternalInvoke (System.Reflection.MonoMethod,object,object[],System.Exception&) at System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00000] in <filename unknown>:0 

在开发过程中,将代码放在主机上的一个目录中,并将其安装到容器中,位于现有代码的顶部。 例如,如果您将代码的副本放在当前目录的dev_app中:

 $ docker run -v $(pwd)/dev_app:/app -d -p 80:5004 myapp 

dev_app目录中的代码进行的任何更改都将立即反映在容器中。 完成更改后,可以使用新版本的代码重新构build容器进行分发。