码迷,mamicode.com
首页 > Web开发 > 详细

.netcore2.0 docker 发布实践

时间:2018-05-07 11:53:09      阅读:222      评论:0      收藏:0      [点我收藏+]

标签:路径   服务   菜鸟   cimage   分享图片   name   好的   过程   找不到   

之前只在winserver2008上通过iis发布过.netcore的项目,这几天突发奇想决定试试再centos上发布下看看,也体验体验.netcore的跨平台,由于是发布在我自己的服务器上,不想把环境弄脏了,所以决定保险一点用docker来做第一次发布测试,(不得不吐槽netcore的发布版docker镜像真大的无法忍啊)具体过程如下:

1,首先准备发布包,这里我用的不是便携发布包(一来太大,二来还是太大),使用dotnet publish命令打包待发布项目,在bin/debug/.netcoreapp2.0/publish(目录也可能是release)中获取发布文件

2,准备Dockerfile镜像构建文件,文件内容如下:

FROM microsoft/aspnetcore-build:latest

WORKDIR /app

EXPOSE 80

COPY ./ ./

ENTRYPOINT ["dotnet", "ServiceDepartmentAugustMember.dll"]

PS:这里有个坑,我docker也是个菜鸟,在copy命令时犯错了,copy命令第一个参数指的是原路径,这里的原路径是相对于dockerfile文件所在目录为根目录的,比如我上面的参数“./”指的就是当前目录,第二个参数指的是docker镜像中的目录,这里的目录都是以WORKDIR命令标记的目录为跟目录的,所以“./”在镜像中实际是指“/app”目录,如果你要把文件直接复制到docker镜像工作目录,直接用上面的命令就可以了,如果你要把文件复制到docker镜像中的某一个新建目录中那么需要改变第二个参数,例如“./publish”(镜像中的目录就是./app/publish),这时ENTRYPOINT命令需要修改为["dotnet", "./publish/ServiceDepartmentAugustMember.dll"],不然是找不到文件的。

3,将编辑好的dockerfile文件放入发布包,然后一并上传到docker所在服务器

4,ssh登陆docker所在服务器,进入发布包所在目录,使用命令:

docker build -t docker.io/xxx:1.0

xxx(这里一般写的是自己的docker登陆用户名)/testnetcore(仓库名)                                            

1.0(镜像版本号,可以写英文代号如lastest)

这么写的docker镜像的tag标签的原因是方便之后把个人镜像push到docker.io上去,如果没有push的需要那么可以直接写 仓库名:版本号

5,因为dockerfile文件比较简单,所以如果报错的话,就是copy路径的问题

6,构建完成以后,可以用docker images 查看下镜像是不是正常生成了,如下:

技术分享图片
 

7,使用命令根据镜像开启容器:

docker run --name winter_1 -p 8080:80 docker.io/rokeyyan/winter:1.0

正常情况下会显示下面的内容:

技术分享图片
 

8,如果想docker进程挂在后台,那就ctrl+c以后重新用 docker start winter_1 重新启动容器了

9,如果以上都正常,那就用IP:8080愉快的访问你的.netcore应用吧!

.netcore2.0 docker 发布实践

标签:路径   服务   菜鸟   cimage   分享图片   name   好的   过程   找不到   

原文地址:https://www.cnblogs.com/rokeyyan/p/9001569.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!