标签:路径 服务 菜鸟 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应用吧!
标签:路径 服务 菜鸟 cimage 分享图片 name 好的 过程 找不到
原文地址:https://www.cnblogs.com/rokeyyan/p/9001569.html