使用VS 2015发布自己创建的asp.net core项目
首先在VS 2015中创建一个asp.net项目,按F5测试一下这个东西是否能运行】
默认是53757端口运行的网站
首先先创建dockerfile ,可以使用vs2015的docker 工具
使用vs 2015 tools for docker 工具,然后鼠标右键点击项目,添加,docker Support
工具会自动帮我们配置相关的文件,比如Dockerfile
FROM
FROM microsoft/aspnetcore:1.0.1
基于哪个镜像,这里是用的是aspnetcore官方镜像,1.0.1是tag版本号,如果不写,那么tag默认的是latest最后一个版本
ENTRYPOINT
ENTRYPOINT ["dotnet", "chaichai.dll"]
ENTRYPOINT 帮助你配置一个容器使之可执行化,如果你结合CMD命令和ENTRYPOINT命令,你可以从CMD命令中移除“application”而仅仅保留参数,参数将传递给ENTRYPOINT命令,
ARG
ARG source=.
ARG指令定义了一个变量,能让用户可以在构建期间使用docker build命令和其参数–build-arg =对这个变量赋值。如果用户指定了一个构建参数没有定义在Dockerfile的话,将输出错误。
WORKDIR
WORKDIR /app
WORKDIR命令用于设置CMD指明的命令的运行目录。
EXPOSE
EXPOSE 80
用来指定端口,使得容器内的应用可以通过端口和外界进行交互,镜像开启的是80端口,之后在宿主机和容器之间的映射关系,我们可以在docker run -p 80:80这里来设置
COPY
COPY $source .
COPY复制新文件或者目录从 并且添加到容器指定路径中 。用法同ADD,唯一的不同是不能指定远程文件 URLS
Dockerfile的命令远不止这些,项目需求的不同,在Dockerfile中内容也会有所不同。但是Dockerfile的确是我们在创建镜像文件中最重要的一个,他必须从 FROM 开始,指定一个基础镜像,然后在这镜像的基础上,将我们的项目部署发布。
我尝试过用VS 2015中Docker编译项目文件,但是出现了一些小问题,并且我还无法停止编译的过程。所以我选择在本地直接打包部署。之后我会尝试如果将本地的项目发布到我的云服务器上docker容器。
首先进入项目的目录中
dotnet publish
docker build bin\Debug\netcoreapp1.0\publish -t mychai
执行Dockerfile中的命令构建镜像
docker images
查看创建的镜像文件
一个FROM制定的基础镜像 aspnetcore 和我刚刚创建的一个 mychai 镜像文件。
docker run -it -d -p 85:80 mychai
将镜像文件mychai运行到容器中,并且设置宿主机的85端口映射容器的80端口(或许我说反了,这我不太能够确定)
docker ps
查看正在运行中的容器
从反馈的信息可以看到,他的端口映射情况和id号。打开浏览器,查看一下85端口
ok,没得问题了。但是值得注意的是,这里我是将docker 运行在linux中的
docker version
猜测原因可能是因为基础镜像是linux的原因。