使用Jenkins将.net核心添加到docker容器中

时间:2018-01-04 23:14:03

标签: docker .net-core dockerfile docker-container

我正在尝试创建一个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

4 个答案:

答案 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)

我相信你应该遵循以下方法:

  1. 开发您的asp.net核心应用并登录Git(任何源代码控制)

  2. 拥有一台安装了Jenkins,.Net Core,Docker的构建服务器

  3. 配置Jenkins与Git通信(webhook / polling - 查看是否有签到)

  4. 并配置Jenkins作业,该作业将执行以下操作

    • 从Git中拉出最新消息,
    • 恢复,
    • 构建,
    • 发布asp.net核心应用程序
    • 创建一个能够在其中运行asp.net核心应用程序的docker镜像
    • 将刚刚创建的泊坞窗图像上传到Docker Hub
  5. 您可能不希望完全按照上面提到的那样做,特别是源控制部分。但这种方法效果很好。 我在进行上述设置时遵循了此link

    希望它有所帮助。谢谢!