gpt4 book ai didi

shell - 为什么在 dockerfile 中找不到 dotnet 命令?

转载 作者:行者123 更新时间:2023-12-02 02:43:03 25 4
gpt4 key购买 nike

我尝试运行位于 shell 文件中的 dotnet 命令,该文件将在 docker 构建过程中由 dockerfile 调用。

这是 dockerfile 片段:

FROM ubuntu:16.04
FROM microsoft/dotnet:2.2-sdk as build-env

# .net core
RUN apt-get update -y && apt-get install -y wget apt-transport-https
RUN wget -q https://packages.microsoft.com/config/ubuntu/16.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb && dpkg -i packages-microsoft-prod.deb
RUN apt-get update -y && apt-get install -y aspnetcore-runtime-2.2=2.2.1-1

# dotnet tool command
RUN apt-get update -y && apt-get install dotnet-sdk-2.2 -y
# for dot net tool #https://stackoverflow.com/questions/51977474/install-dotnet-core-tool-dockerfile
ENV PATH="${PATH}:/root/.dotnet/tools"

# Supervisor
RUN apt-get update -y && apt-get install -y supervisor && mkdir -p /etc/supervisor

# main script as defacult command when docker container runs
# Run the main sh script to run script in each xxx/*/db-migrate.sh.
CMD ["/xxx/main-migrate.sh"]

# Microservice files
ADD xxx /xxx

# install the xxx deploy tool
WORKDIR /xxx
RUN for d in /xxx/*/ ; do cd "$d"; if [ -f "./install.sh" ]; then sh ./install.sh; fi; done

install.sh中,代码如下:

dotnet tool install -g xxx.DEPLOY --version [$(cat version)] --add-source /xxx/

当我运行 docker build -t xxx:v0 . 时,我收到一条错误消息:

./install.sh: 1: ./install.sh: dotnet: not found

我添加了 FROM microsoft/dotnet:2.2-sdk as build-env & RUN apt-get update -y && apt-get install dotnet-sdk-2.2 -y,但是为什么Docker在构建过程中找不到dotnet命令?

如何在docker构建过程中调用位于shell脚本文件中的dotnet命令?

谢谢

最佳答案

FROM ubuntu:16.04
FROM microsoft/dotnet:2.2-sdk as build-env

在上面几行FROM ubuntu:16.04将被完全忽略,因为应该只有一个 base image,所以最后一个 FROM将是 considered as a base image这是FROM microsoft/dotnet:2.2-sdk不是 ubuntu。

因此,如果您的基本图像是 FROM microsoft/dotnet:2.2-sdk as build-env那为什么还要运行这些复杂的脚本来安装 dotnet

你可以去检查 dotnet 的版本。

FROM microsoft/dotnet:2.2-sdk as build-env
RUN dotnet --version

输出

Step 1/6 : FROM microsoft/dotnet:2.2-sdk as build-env
---> f13ac9d68148
Step 2/6 : RUN dotnet --version
---> Running in f1d34507c7f2

> 2.2.402

Removing intermediate container f1d34507c7f2
---> 7fde8596c331

关于shell - 为什么在 dockerfile 中找不到 dotnet 命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57948389/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com