docker发布.net core3.1 其二 电脑版发表于:2020/9/10 17:25 上一篇说了一下,docker发布.net core3.1 https://www.tnblog.net/aojiancc2/article/details/5023 其中的dockerfile文件包含了对core项目的生成->发布->运行等操作 ![](https://img.tnblog.net/arcimg/aojiancc2/598bbfb9bef14de0892e97adfc630fdc.png) tn#我们现在不这么做,我们直接在本地把项目发布出来,然后这个dockerfile就不需要写那么多命令了 上一篇那种操作是因为编译、发布等都在编译成镜像的时候操作的,步骤就会比较多,比较繁琐,我们可以把编译发布交给vs来做,就会简化很多操作了。 我们把文件直接发布出来 ![](https://img.tnblog.net/arcimg/aojiancc2/5c74bdc4c66941bba555cf384d148815.png) 然后修改dockerfile文件,如下留这么一点点就行了 ``` FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base WORKDIR /app EXPOSE 80 COPY . . ENTRYPOINT ["dotnet", "DockerLearn.dll"] ``` dockerfile文件指令说明: - FROM -指定所创建镜像的基础镜像 - WORKDIR-配置工作目录 - EXPOSE-声明镜像内服务监听的端口 (可以不写,因为我们具体映射的端口可以在运行的时候指定。dockerfile里边的端口优先级没有启动的时候指定的高,可以在指定端口映射的时候修改) - COPY-复制内容到镜像 (. .代表当前目录) - ENTRYPOINT-启动镜像的默认人口命令 tn#上传文件到服务器 ![](https://img.tnblog.net/arcimg/aojiancc2/3862d9c0522049099f576b7628d4fdc5.png) tn#cd命令切换到项目根目录执行docker编译构建镜像命令 命令如下 ``` docker build -t mytestapi2 . ``` ![](https://img.tnblog.net/arcimg/aojiancc2/89cc6ac545824a2d862568a92dbaea7a.png) 编译镜像的时候还可以打tag ``` docker build -t myapi:latest . docker build -t myapi:v1 . ``` tn#使用命令运行镜像 ``` docker run --name=myapi2 -p 9001:80 mytestapi2 ``` ![](https://img.tnblog.net/arcimg/aojiancc2/f55d5a62b753414ca7c54f78cad1165e.png) tn4> 端口映射内部不一定都是80,看你内部项目暴露的是什么端口,映射内容就写什么端口。比如项目内部暴露的是8003,想要外部也通过8003访问的话就是这样 8003:8003,当然两个端口完全可以不一样。 **运行的时候也可以接版本,比如这样** ``` docker run --name=wy_jbland_api -p 8003:8003 wy_jbland_api:v1 ``` **启动容器的时候指定一个目录挂载:** ``` docker run --name=wy_jbland_api_test \ -p 8666:8003 \ -v ~/fb/wy_jbland_api_bindmounts_uploads:/app/wwwroot/uploads \ wy_jbland_api:v1 ```