在docker中找不到文件

news2024/10/1 15:19:37

问题

这是我的Dockerfile

FROM mcr.microsoft.com/dotnet/sdk:8.0 as build
WORKDIR /app
EXPOSE 80

COPY TotechsThunder.sln TotechsThunder.sln
COPY mock/programminglanguages/programminglanguage.js mock/programminglanguages/programminglanguage.js
COPY src/LightningLanes/API/LightningLanes.csproj src/LightningLanes/API/LightningLanes.csproj
COPY src/LightningLanes/Core/LightningLanes.Core/LightningLanes.Core.csproj src/LightningLanes/Core/LightningLanes.Core/LightningLanes.Core.csproj
COPY src/LightningLanes/Jobs/LightningLanes.HangfireJobHost/LightningLanes.HangfireJobHost.csproj src/LightningLanes/Jobs/LightningLanes.HangfireJobHost/LightningLanes.HangfireJobHost.csproj
COPY src/Features/GitHubFeatures/Logics/Logics.csproj src/Features/GitHubFeatures/Logics/Logics.csproj
COPY src/Features/GitHubFeatures/Tests/Tests.csproj src/Features/GitHubFeatures/Tests/Tests.csproj
COPY src/Technologies/Technologies.csproj src/Technologies/Technologies.csproj
COPY src/Projects/Projects.csproj src/Projects/Projects.csproj
COPY src/Contracts/Contracts.csproj src/Contracts/Contracts.csproj
COPY src/IdentityServer/IdentityServer.csproj src/IdentityServer/IdentityServer.csproj
COPY src/Gateway/Gateway.csproj src/Gateway/Gateway.csproj

RUN dotnet restore TotechsThunder.sln

COPY src/Technologies src/Technologies
COPY src/Contracts src/Contracts
WORKDIR /app/src/Technologies
RUN dotnet publish -c Release -o /app/src/out

FROM mcr.microsoft.com/dotnet/aspnet:8.0
WORKDIR /app
COPY --from=build /app/src/out .
ENTRYPOINT [ "dotnet", "Technologies.dll" ]

在使用该文件时遇到了麻烦programminglanguage.js。此文件包含主数据,我的ASP.NET Core应用程序在初始化期间使用这些数据将数据植入数据库迁移。在我的开发环境中,一切正常,但当我在Docker环境中运行该项目时,找不到该文件。

当运行时docker compose build,服务构建成功。但当项目在Docker中运行时,我遇到以下错误:

2024-09-21 04:40:15 Unhandled exception. System.IO.FileNotFoundException: Could not find file '/app/..\..\..\..\..\mock\programminglanguages\programminglanguage.js'

这是我在迁移期间用于读取文件以进行播种的代码:

string baseDir = AppDomain.CurrentDomain.BaseDirectory;
string relativePath = @"..\..\..\..\..\mock\programminglanguages\programminglanguage.js";
string fullPath = Path.GetFullPath(Path.Combine(baseDir, relativePath));

Docker中,问题似乎源于相对文件路径未正确解析。

我的项目中的文件位置
在这里插入图片描述
确实尝试过:尝试检查docker容器内部是否有programminglanguage.js文件,但release + docker环境文件系统对我来说太陌生了,无法进行调查

我的期望是:programminglanguage.js被复制到容器内,路径为

string relativePath = @"..\..\..\..\..\mock\programminglanguages\programminglanguage.js";

检索文件不应该导致没有文件

解决方案

问题在于使用反斜杠\而不是正常斜杠,因为Docker运行基于Linux的镜像,Windows文件路径将无法很好地识别

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2166418.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

大觅网之业务部署(Business deployment of Da Mi Network)

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 本人主要分享计算机核心技…

ubuntu20.04.6 触摸屏一体机,外接视频流盒子开机输入登录密码触屏失灵问题解决方法

1. 首先直接运行xrandr命令,查看设备的相关信息: 运行之后会显示当前连接设备的屏幕信息,如下图,LVDS和VGA-0,而HDMI屏幕为disconnect,意为没有连接: 2. 设置开机主屏幕显示: xrand…

TypeScript 设计模式之【建造者模式】

文章目录 **建造者模式**:打造你的梦想之屋建造者的秘密建造者有什么利与害?如何使用建造者搭建各种房子代码实现案例建造者模式的主要优点建造者模式的主要缺点建造者模式的适用场景总结 建造者模式:打造你的梦想之屋 假设你想要一栋完美的…

LeetCode[简单] 876. 链表的中间结点

给你单链表的头结点 head ,请你找出并返回链表的中间结点。 如果有两个中间结点,则返回第二个中间结点。 思路 对任意正整数 n,中间结点的编号可以表示成 ⌊2n​⌋1。 解法一 /*** Definition for singly-linked list.* public class L…

数据分析:线性回归计算嵌套的组间差异

文章目录 介绍加载依赖包导入数据数据预处理数据概览线性回归画图森林图的特点:森林图的作用:总结系统信息介绍 在统计学中,嵌套的组间差异分析是一种评估不同组别间差异的方法,尤其适用于层级结构或分组数据。通过线性回归模型,我们可以计算出各个变量对于因变量的影响,…

priority_queue优先级队列(堆)详解。C++经验+1

什么是堆 首先我们先了解什么是堆?堆分为大根堆和小根堆。但其实大根堆会让人误以为是不是大的元素在下面呢?为了防止错误想法,大根堆也可以叫大顶堆。 大顶堆:顶上元素最大,上一层比下一层元素大。 小顶堆&#xff…

AI搜索软件哪个好,AI搜索引擎工具分享

随着AI技术的发展,AI搜索引擎工具正逐渐成为我们信息获取的重要方法。下面小编就来和大家分享一些好用的AI搜索引擎软件,感兴趣的同学可以逐个使用体验一下。因为每个AI搜索引擎工具不同,建议大家搜索的时候可以多个工具搜索,然后…

.netcore nacos注册成功,服务列表找不到任何服务

命令空间id不要自动生成 .netcore 配置文件里,Namespace 配置命名空间id 而不是命名空间名称。

OrangePi 烧录镜像步骤

理解:第一步:烧录镜像。第二步:建立编译环境(一般是PC端的Linux虚拟机)和板卡端的文件连接。因为要传文件,一般用挂载的方法。第三步:软件程序的编译与部署。 第一步:烧录镜像步骤 …

React学习笔记(四)——React 组件生命周期

目录 1. 生命周期-概览 2. 生命周期-挂载阶段 3. 生命周期-更新阶段 4. 生命周期-卸载阶段 5. setState扩展-发现问题 6. setState扩展-更多用法 7. setState扩展-异步 1. 生命周期-概览 了解react类组件生命周期整体情况 大致步骤: 什么是生命周期React类组…

AntFlow-Vue3 :一个仿钉钉流程审批,且满足99.8%以上审批流程需求的企业级工作流平台,开源且免费!

在现代企业管理中,流程审批的高效性直接影响到工作的流畅度与生产力。最近,我发现了一个非常有趣的项目—— AntFlow-Vue3 。这个项目不仅提供了一个灵活且可定制的工作流平台,还能让用户以可视化的方式创建和管理审批流程。 如果你是一名前…

10. 排序

一、排序的概念及引用 1. 排序的概念 排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。 稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录…

Qt基础之四十七:管理员权限

在Windows系统中,以管理员身份运行的意思是,用系统管理最高权限运行程序。一般来说,只有当某些操作涉及系统保护区域时,才会需要用户授权管理员运行。如此一来,程序、命令在运行过程中,就有了足够权限,更改系统设置或注册表。 一.Qt程序加入管理员权限的几种方式 1.MS…

推荐一些免费下载恶意样本的网站

前一阵微步下载样本开始收费,算是又断了一个很好的白嫖途径。目前工作需求是不定期获取一批不同家族样本,看了看微步基础会员每天5次的下载限制,我默默把微步网页点了X,选择其他网站进行白嫖。 精确搜索 先列举出几个搜索比较简单…

【每天学个新注解】Day 6 Lombok注解简解(五)—@SneakyThrows

SneakyThrows 简化异常处理 并不建议日常开发中通过此注解解决异常捕获问题!!! 允许方法抛出检查型异常而无需显式声明或捕获这些异常。这对于那些不希望在方法签名中声明异常或不愿意编写复杂的 try-catch 块的场景非常有用。 使用 SneakyT…

vue绘制评论页面

<template><div><div class"conmment_box"><div class"my-reply"><div class"reply-info"><el-inputfocus"focusInput"type"textarea"placeholder"请输入内容"v-model"tex…

LaTeX 编辑器-TeXstudio

TeXstudio 是一款开源跨平台 LaTeX 编辑软件&#xff0c;界面与 Texmaker 类似。TeXstudio 为用户提供互动式拼写检查、代码折叠、语法高亮、代码提示和自动完成等特性&#xff0c;功能丰富&#xff0c;界面美观&#xff0c;但软件本身不提供底层功能&#xff0c;需要使用者自行…

Qualcomm AI Hub模型优化1: Whisper-Base-En导出及问题解决

1 从Qualcomm AI Hub Module中选择Whisper-Base-En模块部署 1.1 进入module虚拟环境 python3 -m venv qai_hub_models_env && source qai_hub_models_env/bin/activate1.2 使用pip安装高通音频转录包 pip install "qai_hub_models[whisper_base_en]" 1.3…

C语言 | Leetcode C语言题解之第436题寻找右区间

题目&#xff1a; 题解&#xff1a; typedef struct {int start;int index; } Node;int cmp(const void *pa, const void *pb) {return ((Node *)pa)->start - ((Node *)pb)->start; }int* findRightInterval(int** intervals, int intervalsSize, int* intervalsColSiz…

网站建设中,JavaScript为什么现在可以做后台了?

JavaScript&#xff0c;作为一种最初为浏览器端脚本设计的语言&#xff0c;已经逐渐发展成为可以在服务器端运行的强大工具。以下是JavaScript可以做后台开发的原因分析&#xff1a; Node.js的崛起 事件驱动与非阻塞I/O&#xff1a;Node.js的事件驱动和非阻塞I/O模型使得JavaSc…