- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 .NET Core 项目,我正在将其构建到 docker 镜像中。 Dockerfile 如下所示:
FROM mcr.microsoft.com/dotnet/core/sdk:3.0-alpine AS restore
WORKDIR /tmp/build
COPY ./*.sln .
COPY ./*/*.csproj ./
# Put project files back into their own project directories
RUN for file in $(ls *.csproj); do mkdir -p ${file%.*}/ && mv $file ${file%.*}/; done
RUN dotnet restore
# Copy in the source files
FROM restore AS build
WORKDIR /tmp/build
COPY . .
RUN dotnet publish -o output MyApp/MyApp.csproj
FROM mcr.microsoft.com/dotnet/core/aspnet:3.0-alpine AS runtime
WORKDIR /app
COPY --from=build /tmp/build/output .
ENTRYPOINT [ "dotnet", "MyApp.dll"]
如果我 cd
进入目录并运行 dotnet restore
,包会很快恢复,没有任何问题。但是,当它到达 Docker 中构建过程的 RUN dotnet restore
行时,restore 命令运行得异常缓慢,有时甚至会超时。
我只能假设这是 Docker 网络连接的某种问题,但我不知道从哪里开始。这是在 Linux 上,特别是 Deepin。
最佳答案
我相信这可能与尚未发布的 dotnet core v3 有关。
构建以下 dockerfile:
FROM mcr.microsoft.com/dotnet/core/sdk:2.2-alpine AS restore
WORKDIR /tmp/build
COPY . .
RUN dotnet restore
FROM restore AS build
WORKDIR /tmp/build
COPY . .
RUN dotnet publish -o output restore-example.csproj
FROM mcr.microsoft.com/dotnet/core/aspnet:2.2-alpine AS runtime
WORKDIR /app
COPY --from=build /tmp/build/output .
ENTRYPOINT [ "dotnet", "restore-example.dll"]
我的构建时间为 12 秒
$ docker system prune -f && time docker build .
Deleted Images:
deleted: sha256:af0270527dd0dd2a5e371daa395fa91f834b1573eab831725e37c1c98fcd91d7
deleted: sha256:5d5762859e232d5f010b5584d76fc5c4dcf1eb3779b50099d0844ebf08329588
deleted: sha256:906be7cd6a27a7bd5a712061faca0d02ae36cc7c1cd007e11e222f0970c7cce1
deleted: sha256:143ec3415424e99d0518cf39eaf20b5aac2f6b1c6d6edcebd788ad92cdbd14aa
deleted: sha256:2a391aaba15427d9979bc1aa57f2af03f891a055ef6e740e34f7739d64f4e593
deleted: sha256:16576c0f378d7c0450c8e9d8268e6840065e2534d8701c023075ae7b4a351a7b
deleted: sha256:ccf12511b61cab62eae3b6067cde13728d9145924e3d8266d3d765bd2014c1db
deleted: sha256:e7149dfa101cdb975b2c21fdb4f5eaa9ffb4fa5e0b720089937bce200b192353
deleted: sha256:0e1be0f142e24fac1e510ad8047ac0eee813d0583d76351bdb42cc82cbf7e8bc
deleted: sha256:8e1f0aa0f65c5bad1168eed9b9e213f6c3a2610de069e3ae6a1afc262d141eb9
deleted: sha256:85182a03f99e21e91afd9f17d373bb44d502bab3d01ff362f45cca39d6fe04d3
deleted: sha256:52ed4afff3095e3ac5b2e34a1aabce7b4407a0b95550b82657f62e56f8009585
deleted: sha256:841a8ff534c2efabee04f3e035ed7b565a5ae95eec8d16e9fdff00d7862260cb
deleted: sha256:a9aaff5c95ce5444732deef867c986cba25cd760f67bd557885d1a604c1649ab
deleted: sha256:b01c24cc26f155c7017baf482d9b7d11140cf122ca061b2241c8c5a5e734986e
deleted: sha256:863e4585da1623aa9568a58b306fb31ffaa28038b50f2354a4356f56fb9deaa6
Total reclaimed space: 67.36MB
Sending build context to Docker daemon 71.17kB
Step 1/12 : FROM mcr.microsoft.com/dotnet/core/sdk:2.2-alpine AS restore
---> a4262c5dc8c3
Step 2/12 : WORKDIR /tmp/build
---> Running in fbf8121ee1f4
Removing intermediate container fbf8121ee1f4
---> 11d67baed4b4
Step 3/12 : COPY . .
---> 703e0db87403
Step 4/12 : RUN dotnet restore
---> Running in bc4fc4e36282
Restore completed in 6.14 sec for /tmp/build/restore-example.csproj.
Removing intermediate container bc4fc4e36282
---> e0eb73b57f9b
Step 5/12 : FROM restore AS build
---> e0eb73b57f9b
Step 6/12 : WORKDIR /tmp/build
---> Running in da50ef82948b
Removing intermediate container da50ef82948b
---> 3215dff1d63b
Step 7/12 : COPY . .
---> b5898cfbf57e
Step 8/12 : RUN dotnet publish -o output restore-example.csproj
---> Running in 14ad93b89253
Microsoft (R) Build Engine version 16.2.32702+c4012a063 for .NET Core
Copyright (C) Microsoft Corporation. All rights reserved.
Restore completed in 41.27 ms for /tmp/build/restore-example.csproj.
restore-example -> /tmp/build/bin/Debug/netcoreapp2.2/restore-example.dll
restore-example -> /tmp/build/output/
Removing intermediate container 14ad93b89253
---> 5ec8c744e4a5
Step 9/12 : FROM mcr.microsoft.com/dotnet/core/aspnet:2.2-alpine AS runtime
---> 829fb2904a07
Step 10/12 : WORKDIR /app
---> Running in a8b276c6229d
Removing intermediate container a8b276c6229d
---> 0aed3e9a3a94
Step 11/12 : COPY --from=build /tmp/build/output .
---> 36f9141d0c21
Step 12/12 : ENTRYPOINT [ "dotnet", "restore-example.dll"]
---> Running in 8e54f498b5bf
Removing intermediate container 8e54f498b5bf
---> 7bca25c5d0bb
Successfully built 7bca25c5d0bb
real 0m12.359s
user 0m0.049s
sys 0m0.050s
构建以下 dockerfile:
FROM mcr.microsoft.com/dotnet/core/sdk:3.0-alpine AS restore
WORKDIR /tmp/build
COPY . .
RUN dotnet restore
FROM restore AS build
WORKDIR /tmp/build
COPY . .
RUN dotnet publish -o output restore-example.csproj
FROM mcr.microsoft.com/dotnet/core/aspnet:3.0-alpine AS runtime
WORKDIR /app
COPY --from=build /tmp/build/output .
ENTRYPOINT [ "dotnet", "restore-example.dll"]
我得到了 1m+ 的构建时间(并且至少有一个构建超时):
$ docker system prune -f && time docker build .
Total reclaimed space: 0B
Sending build context to Docker daemon 71.17kB
Step 1/12 : FROM mcr.microsoft.com/dotnet/core/sdk:3.0-alpine AS restore
---> f837a0325ef5
Step 2/12 : WORKDIR /tmp/build
---> Running in a999a205fbea
Removing intermediate container a999a205fbea
---> b01c24cc26f1
Step 3/12 : COPY . .
---> 841a8ff534c2
Step 4/12 : RUN dotnet restore
---> Running in 2096ec27a007
Restore completed in 1.41 min for /tmp/build/restore-example.csproj.
Removing intermediate container 2096ec27a007
---> 85182a03f99e
Step 5/12 : FROM restore AS build
---> 85182a03f99e
Step 6/12 : WORKDIR /tmp/build
---> Running in 506bf68b37f7
Removing intermediate container 506bf68b37f7
---> 8e1f0aa0f65c
Step 7/12 : COPY . .
---> e7149dfa101c
Step 8/12 : RUN dotnet publish -o output restore-example.csproj
---> Running in 13d2b33e3145
Microsoft (R) Build Engine version 16.3.0-preview-19377-01+dd8019d9e for .NET Core
Copyright (C) Microsoft Corporation. All rights reserved.
Restore completed in 25.31 ms for /tmp/build/restore-example.csproj.
You are using a preview version of .NET Core. See: https://aka.ms/dotnet-core-preview
restore-example -> /tmp/build/bin/Debug/netcoreapp2.2/restore-example.dll
restore-example -> /tmp/build/output/
Removing intermediate container 13d2b33e3145
---> 16576c0f378d
Step 9/12 : FROM mcr.microsoft.com/dotnet/core/aspnet:3.0-alpine AS runtime
---> 06dbfd71b75a
Step 10/12 : WORKDIR /app
---> Running in 4fa4446bc907
Removing intermediate container 4fa4446bc907
---> 143ec3415424
Step 11/12 : COPY --from=build /tmp/build/output .
---> 5d5762859e23
Step 12/12 : ENTRYPOINT [ "dotnet", "restore-example.dll"]
---> Running in e928e1c80418
Removing intermediate container e928e1c80418
---> af0270527dd0
Successfully built af0270527dd0
real 1m31.916s
user 0m0.161s
sys 0m0.095s
我正在运行最新的 Fedora 30 安装。
Linux localhost.localdomain 5.2.9-200.fc30.x86_64 #1 SMP Fri Aug 16 21:37:45 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
和 docker v19
Docker version 19.03.1, build 74b1e89
关于c# - dotnet restore 在 docker-compose build 中非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57669467/
#include using namespace std; class C{ private: int value; public: C(){ value = 0;
这个问题已经有答案了: What is the difference between char a[] = ?string?; and char *p = ?string?;? (8 个回答) 已关闭
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 7 年前。 此帖子已于 8 个月
除了调试之外,是否有任何针对 c、c++ 或 c# 的测试工具,其工作原理类似于将独立函数复制粘贴到某个文本框,然后在其他文本框中输入参数? 最佳答案 也许您会考虑单元测试。我推荐你谷歌测试和谷歌模拟
我想在第二台显示器中移动一个窗口 (HWND)。问题是我尝试了很多方法,例如将分辨率加倍或输入负值,但它永远无法将窗口放在我的第二台显示器上。 关于如何在 C/C++/c# 中执行此操作的任何线索 最
我正在寻找 C/C++/C## 中不同类型 DES 的现有实现。我的运行平台是Windows XP/Vista/7。 我正在尝试编写一个 C# 程序,它将使用 DES 算法进行加密和解密。我需要一些实
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
有没有办法强制将另一个 窗口置于顶部? 不是应用程序的窗口,而是另一个已经在系统上运行的窗口。 (Windows, C/C++/C#) 最佳答案 SetWindowPos(that_window_ha
假设您可以在 C/C++ 或 Csharp 之间做出选择,并且您打算在 Windows 和 Linux 服务器上运行同一服务器的多个实例,那么构建套接字服务器应用程序的最明智选择是什么? 最佳答案 如
你们能告诉我它们之间的区别吗? 顺便问一下,有什么叫C++库或C库的吗? 最佳答案 C++ 标准库 和 C 标准库 是 C++ 和 C 标准定义的库,提供给 C++ 和 C 程序使用。那是那些词的共同
下面的测试代码,我将输出信息放在注释中。我使用的是 gcc 4.8.5 和 Centos 7.2。 #include #include class C { public:
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
我的客户将使用名为 annoucement 的结构/类与客户通信。我想我会用 C++ 编写服务器。会有很多不同的类继承annoucement。我的问题是通过网络将这些类发送给客户端 我想也许我应该使用
我在 C# 中有以下函数: public Matrix ConcatDescriptors(IList> descriptors) { int cols = descriptors[0].Co
我有一个项目要编写一个函数来对某些数据执行某些操作。我可以用 C/C++ 编写代码,但我不想与雇主共享该函数的代码。相反,我只想让他有权在他自己的代码中调用该函数。是否可以?我想到了这两种方法 - 在
我使用的是编写糟糕的第 3 方 (C/C++) Api。我从托管代码(C++/CLI)中使用它。有时会出现“访问冲突错误”。这使整个应用程序崩溃。我知道我无法处理这些错误[如果指针访问非法内存位置等,
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 7 年前。
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是偏离主题的,因为
我有一些 C 代码,将使用 P/Invoke 从 C# 调用。我正在尝试为这个 C 函数定义一个 C# 等效项。 SomeData* DoSomething(); struct SomeData {
这个问题已经有答案了: Why are these constructs using pre and post-increment undefined behavior? (14 个回答) 已关闭 6
我是一名优秀的程序员,十分优秀!