docker发布.net core3.1 其二 电脑版发表于:2020/9/10 17:25 上一篇说了一下,docker发布.net core3.1 https://www.tnblog.net/aojiancc2/article/details/5023 其中的dockerfile文件包含了对core项目的生成->发布->运行等操作  tn#我们现在不这么做,我们直接在本地把项目发布出来,然后这个dockerfile就不需要写那么多命令了 上一篇那种操作是因为编译、发布等都在编译成镜像的时候操作的,步骤就会比较多,比较繁琐,我们可以把编译发布交给vs来做,就会简化很多操作了。 我们把文件直接发布出来  然后修改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#上传文件到服务器  tn#cd命令切换到项目根目录执行docker编译构建镜像命令 命令如下 ``` docker build -t mytestapi2 . ```  编译镜像的时候还可以打tag ``` docker build -t myapi:latest . docker build -t myapi:v1 . ``` tn#使用命令运行镜像 ``` docker run --name=myapi2 -p 9001:80 mytestapi2 ```  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 ```