我正在尝试创建一个dockerfile,它将使用.net core 2.0和Jenkins构建一个映像。我对Docker不熟悉,但想在我的容器中加入.net core 2.0和Jenkins,所以我不必担心.net核心安装在目标机器上,可以用我的Jenkins构建.net核心应用程序容器。我在这里错过了什么吗?
它构建正常,直到它运行apt-get update命令,我收到以下错误:
E: Malformed entry 1 in list file /etc/apt/sources.list.d/dotnetdev.list (component)
E: The list of sources could not be read.
我正在使用以下链接在ubuntu上安装的步骤: https://docs.microsoft.com/en-us/dotnet/core/linux-prerequisites?tabs=netcore2x
我的Dockerfile如下所示:
FROM jenkins
# Install .NET Core SDK
USER root
RUN mkdir -p /jenkins
WORKDIR /jenkins
ENV DOTNET_CORE_SDK_VERSION 2.0
RUN curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor >/jenkins/microsoft.gpg
RUN mv microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpg
RUN sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-ubuntu-xenial-prod xenial main" > /etc/apt/sources.list.d/dotnetdev.list'
RUN apt-get update
RUN apt-get install dotnet-sdk-2.0.0
答案 0 :(得分:4)
在此响应中,您可以使用以下Dockerfile将.NetCore 2安装到Jenkins容器中。显然,您可以根据需要进一步安装所需的插件和其他软件。我希望这会帮助你!
{{1}}
答案 1 :(得分:1)
您可以在Docker容器内运行这些命令以安装.NET Core。它们也可以存储在Dockerfile中(按照@ Zooly57)
安装最新的.NET Core 2.0:
sudo apt install libunwind8 gettext apt-transport-https
curl -sSL https://dot.net/v1/dotnet-install.sh | bash /dev/stdin --channel 2.0
.NET Core的LTS版本
sudo apt install libunwind8 gettext apt-transport-https
curl -sSL https://dot.net/v1/dotnet-install.sh | bash /dev/stdin --channel LTS
此处的脚本内容: https://github.com/dotnet/cli/blob/master/scripts/obtain/dotnet-install.sh
答案 2 :(得分:1)
丹尼斯(Dennis)很棒的answer,这正是我最终要做的。这也是对Docker的很好介绍:-)
这是我在Debian 9(拉伸)上针对Jenkins 2.249.2(撰写本文时为LTS)的Dockerfile:
# Extend Jenkins 2.249.2 on Debian 9 (stretch)
FROM jenkins/jenkins:2.249.2-lts
# Switch to root user to install .NET SDK
USER root
# Print kernel and distro info
RUN echo "Distro info:" && uname -a && cat /etc/*release
# Install needed tools and upgrade installed packages
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
curl apt-transport-https software-properties-common \
&& apt-get upgrade -y
# Add Microsoft repository for .NET SDK
RUN curl -sSL https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
RUN apt-add-repository https://packages.microsoft.com/debian/9/prod/
# Install .NET SDK
RUN apt-get update \
&& apt-get install -y dotnet-sdk-3.1
# Switch back to jenkins user
USER jenkins
dotnet命令无需设置任何路径即可工作。
我想当发布使用Debian 10的Jenkins的较新版本时,我将只更新FROM行,然后更新Microsoft存储库URL。
答案 3 :(得分:0)
我相信你应该遵循以下方法:
开发您的asp.net核心应用并登录Git(任何源代码控制)
拥有一台安装了Jenkins,.Net Core,Docker的构建服务器
配置Jenkins与Git通信(webhook / polling - 查看是否有签到)
并配置Jenkins作业,该作业将执行以下操作
您可能不希望完全按照上面提到的那样做,特别是源控制部分。但这种方法效果很好。 我在进行上述设置时遵循了此link。
希望它有所帮助。谢谢!