首页 > 其他分享 >docker发布项目的一些坑

docker发布项目的一些坑

时间:2024-10-09 17:45:11浏览次数:8  
标签:项目 Admin csproj Company xxx publish 发布 dotnet docker

 

使用docker发布应用分为两种方式

1.使用源码直接发布:在创建项目的时候,vs会自动生成一个叫Dockerfile 的文件,我们一般会根据这个文件来制作镜像,然后将镜像运行在docker容器中。Dockerfile 如下所示

#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
WORKDIR /app
EXPOSE 80

FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build
WORKDIR /src
COPY ["xxx.Admin.Web/United.Admin.Web.csproj", "xxx.Admin.Web/"]
COPY ["xxx.WebCommon/United.WebCommon.csproj", "xxx.WebCommon/"]
COPY ["Company.Framework/Company.Framework.csproj", "Company.Framework/"]
COPY ["Company.Domain/Company.Domain.csproj", "Company.Domain/"]
COPY ["Company.Application.Shared/Company.Application.Shared.csproj", "Company.Application.Shared/"]
COPY ["Company.Application.Admin/Company.Application.Admin.csproj", "Company.Application.Admin/"]
RUN dotnet restore "United.Admin.Web/United.Admin.Web.csproj"
COPY . .
WORKDIR "/src/xxx.Admin.Web"
RUN dotnet build "xxx.Admin.Web.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "xxx.Admin.Web.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "xxx.HealthWeb.dll"]

从以上代码上可知,Dockerfile 指定了.netcore 的SDK和Runtime的版本镜像。开发80端口,指定工作目录 SRC  复制相关的类库到工作目录,然后对项目进行了还原,构建,发布,等三个动作,这三个动作做完以后  运行当前dll文件。这种方法虽然很爽,但是有坑有坑有坑。当我们进入了项目目录的时候,执行docker build 的时候,发现出问题了。。具体如何提示的我懒就不想截图的,大概报的错是dockerfile中的路径问题。。系统给我们生成的dockerfile  我们不要全信。里面的路径大多数是有问题的  大家使用的时候,一定要仔细核对。

 

2.在VS中发布后的项目做Docker镜像制作

  VS发布项目的步骤应该都很熟悉了,在VS发布后会生成一个名为publish文件夹,直接进入publish文件夹里执行命令 docker build 操作。但是Dockerfile 文件中会有相应的改变,之前的还原,构建,发布的三个动作已经在VS中完成。只需要执行即可  修改后的Dockerfile如下

FROM mcr.microsoft.com/dotnet/aspnet:3.1 AS base FROM mcr.microsoft.com/dotnet/sdk:3.1 AS build ENV ASPNETCORE_URLS http://+:40461 ENV TZ=Asia/Shanghai RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone COPY . /publish WORKDIR /publish EXPOSE 40461 ENTRYPOINT ["dotnet", "xxx.HealthWeb.dll"]   注意:是文件夹是publish  工作目录就是publish   

标签:项目,Admin,csproj,Company,xxx,publish,发布,dotnet,docker
From: https://www.cnblogs.com/lwh888888/p/18454706

相关文章

  • 深度学习对对联:探索seq2seq-couplet项目的智能对联生成
    引言对联作为中国传统文化的瑰宝,一直以其对仗工整、意境深远而备受推崇。随着人工智能技术的发展,利用深度学习来生成对联成为了一个引人注目的研究方向。本文将深入探讨seq2seq-couplet项目,这是一个利用序列到序列(seq2seq)模型来实现智能对联生成的开源项目。seq2seq-couple......
  • Android Studio启动项目下载gradle失败的问题
    解决AndroidStudio项目初始化下载gradle过慢问题解决方法将谷歌官方源替换为国内阿里云或者腾讯云源解决方案替换掉谷歌原地址:官网地址:https://services.gradle.org/distributions/阿里云镜像Gradle下载地址:https://mirrors.aliyun.com/macports/distfiles/gradle/腾讯......
  • 新品发布 | 多通道车载以太网分析仪震撼首发
    VBNET-4302是一款高性能多通道车载以太网分析仪,可进行车载以太网和CAN FD的数据监控解析、通信测试、ECU刷写、产线升级等全场景应用,让汽车总线测试分析更简单!......
  • 尚硅谷vue3实战项目--硅谷甄选项目笔记
    硅谷甄选运营平台此次教学课程为硅谷甄选运营平台项目,包含运营平台项目模板从0到1开发,以及数据大屏幕、权限等业务。此次教学课程涉及到技术栈包含:vue3+TypeScript+vue-router+pinia+element-plus+axios+echarts等技术栈。一、vue3组件通信方式通信仓库地址:https://gitee.c......
  • 某国有资本运营中心人才选拔项目纪实
    某国有资本运营中心人才选拔项目纪实【客户行业】 政府与事业单位【问题类型】 人才招聘选拔【客户背景】在三年国企改革过程中,南方某省政府为响应国家政策,提出组建专业化国有资本投资运营公司,大力开展专业化资本运营,推动国有资本进退留转市场出清和专业化重组的政策方针......
  • 研讨会/对接会/发布会等座位查询怎么查?扫码查座位小程序怎么用?
    签到入座是各种活动的第一步,扫码查座位系统允许参与者扫描二维码完成签到,并扫码查询显示其座位信息,这种方式减少了排队时间,提高了入场的效率,确保活动能够按时高效开始。点击下方链接前往工具查座位-会议/宴会/年会扫码签到查座位系统​​​​​​​实施扫码查询系统的步骤很......
  • 项目实战——简单计算器
    代码演示:whileTrue:try:op=input('请输入一个四则运算算式:')if'+'inop:a=op.split('+')result=int(a[0])+int(a[1])print(result)elif'-'inop:......
  • Java基于SpringBoot的高校体育运动会比赛项目报名系统 +Vue[毕业设计]
    文末获取资源,收藏关注不迷路文章目录项目介绍技术介绍项目界面关键代码目录项目介绍在高等教育体系中,体育运动会不仅是增强学生体质、培养团队精神的重要途径,也是校园文化的重要组成部分。然而,传统的高校体育运动会报名方式往往存在诸多不便,如报名流程繁琐、信息更......
  • webapi发布---问题解决
    一.127.0.0.1是回路地址,来检验本机TCP/IP协议栈,实际使用过程中服务端不在本机,是外部地址,要用IP地址测试。外部用户采用IP+端口号访问,如下图浏览器访问不了,400错误。解决方案:因为IIS7采用了更安全的web.config管理机制,默认情况下会锁住配置项不允许更改。以管理员身份运......
  • dockerfile中volume的用法
    当您使用VOLUME指令指定一个目录时,Docker会为该目录创建一个数据卷。这个卷可以在容器停止或删除后仍然存在DockerfileFROMubuntu:latest#创建一个数据卷VOLUME["/data"]CMD["sleep","3600"]构建镜像,并运行容器dockerbuild-tubuntu:test1.dockerrun-itd......