【问题标题】:dotnet not found in alpine docker在 alpine docker 中找不到 dotnet
【发布时间】:2021-04-05 22:23:30
【问题描述】:

我有以下 dockerfile:

FROM jenkins/jenkins:lts-alpine

USER root

RUN apk update
RUN apk add bash icu-libs krb5-libs libgcc libintl libssl1.1 libstdc++ zlib wget
RUN apk add libgdiplus --repository https://dl-3.alpinelinux.org/alpine/edge/testing/

USER jenkins

RUN wget https://dot.net/v1/dotnet-install.sh -O $HOME/dotnet-install.sh
RUN chmod +x $HOME/dotnet-install.sh
RUN $HOME/dotnet-install.sh -c 5.0

RUN dotnet --info

EXPOSE 2376 23676

但是当我运行 docker-compose 时,它​​给了我:

Building jenkins
failed to get console mode for stdout: Invalid identifier.
[+] Building 64.6s (10/11)
[+] Building 64.7s (11/11) FINISHED
 => [internal] load build definition from jenkins.dockerfile               0.0s
 => => transferring dockerfile: 486B                                       0.0s
 => [internal] load .dockerignore                                          0.0s
 => => transferring context: 2B                                            0.0s
 => [internal] load metadata for docker.io/jenkins/jenkins:lts-alpine      1.6s
 => [1/8] FROM docker.io/jenkins/jenkins:lts-alpine@sha256:b2f3dd63864733  0.0s
 => CACHED [2/8] RUN apk update                                            0.0s
 => CACHED [3/8] RUN apk add bash icu-libs krb5-libs libgcc libintl libss  0.0s
 => [4/8] RUN apk add libgdiplus --repository https://dl-3.alpinelinux.or  7.8s
 => [5/8] RUN wget https://dot.net/v1/dotnet-install.sh -O $HOME/dotnet-i  2.2s
 => [6/8] RUN chmod +x $HOME/dotnet-install.sh                             0.3s
 => [7/8] RUN $HOME/dotnet-install.sh -c 5.0                              52.2s
 => ERROR [8/8] RUN dotnet --info                                          0.5s
------
 > [8/8] RUN dotnet --info:
#11 0.447 /bin/sh: dotnet: not found
------
ERROR: Service 'jenkins' failed to build

我遵循了 Microsoft 文档中的每一步,但一直失败。我在这里做错了什么?

【问题讨论】:

  • 你能找到“[7/8] RUN $HOME/dotnet-install.sh -c 5.0”步骤的控制台输出吗?那里有任何错误或线索吗?我还会尝试查看当时的图像,看看路径中其他地方是否有 dotnet 二进制/脚本,例如/usr/local/bin.
  • 我不知道,抱歉,我从未见过 Docker 抑制输出,只是像这样向您显示“第 7 步耗时 52 秒”。最好的猜测是 dotnet 安装在 Jenkins 用户主目录下的某个位置,因为您将它安装为 Jenkins 而不是 root,它只是不在用户路径中。 (或者它可能会将自己添加到配置文件脚本中,但在您注销并重新登录之前它不可用 - 但我从未见过在 Linux 上执行此操作,即使是作为 root 安装也是如此。)这可能是足以让 Jenkins 代理使用,所以也许这里没有什么可担心的。
  • @Rup 我想我找到了一些东西。当我在 yml 文件中使用卷时,似乎 dotnet sdk 安装正在丢失。当我不使用卷时,dotnet sdk 似乎还不错。

标签: docker jenkins .net-core docker-compose dockerfile


【解决方案1】:

使用jenkins/jnlp-slave:alpine 图像

FROM jenkins/jnlp-slave:alpine

USER root

RUN apk add bash icu-libs krb5-libs libgcc libintl libssl1.1 libstdc++ zlib wget
RUN apk add libgdiplus --repository https://dl-3.alpinelinux.org/alpine/edge/testing/

RUN mkdir -p /usr/share/dotnet \
    && ln -s /usr/share/dotnet/dotnet /usr/bin/dotnet 

RUN wget https://dot.net/v1/dotnet-install.sh
RUN chmod +x dotnet-install.sh
RUN ./dotnet-install.sh -c 3.1 --install-dir /usr/share/dotnet
RUN ./dotnet-install.sh -c 5.0 --install-dir /usr/share/dotnet
RUN ./dotnet-install.sh -c 6.0 --install-dir /usr/share/dotnet

【讨论】:

    【解决方案2】:

    要在带有卷配置的 jenkins 容器中安装 .Net Core 5.0 SDK,我必须执行以下操作:

    FROM jenkins/jenkins:lts-alpine AS builder
    
        # Switch to root user to install .NET SDK
        USER root
    
        # Pre-requisits
        RUN apk add bash icu-libs krb5-libs libgcc libintl libssl1.1 libstdc++ zlib wget
        RUN apk update
    
    FROM builder
    
        # Download do script
        RUN wget https://dot.net/v1/dotnet-install.sh -O $HOME/dotnet-install.sh
    
        RUN chmod +x $HOME/dotnet-install.sh
        RUN $HOME/dotnet-install.sh -c 5.0
    
    
    EXPOSE 2376 2376
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-20
      • 2018-04-26
      • 2017-03-08
      相关资源
      最近更新 更多