добавление ядра .net в контейнер докеров с помощью Jenkins

Я пытаюсь создать файл докеров, который создаст образ с .net core 2.0 и Jenkins. Я новичок в Docker, но хочу включить .net core 2.0 в свой контейнер с Jenkins, поэтому мне не нужно беспокоиться об установке .net core на целевой машине и я могу создавать приложения .net core с Jenkins в моем контейнер. Я что-то упустил здесь?

он отлично работает до тех пор, пока не запустит команду обновления apt-get, и я получу следующую ошибку: 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


person Michael C    schedule 04.01.2018    source источник
comment
Вы когда-нибудь рассматривали возможность использования одного из изображений, поставляемых Microsoft? hub.docker.com/r/microsoft/aspnetcore hub.docker.com/r/microsoft/dotnet   -  person TerribleDev    schedule 05.01.2018
comment
Или скопируйте соответствующие части Dockerfile составление этих изображений, поставляемых Microsoft, для применения к другим изображениям.   -  person Martin Ullrich    schedule 05.01.2018
comment
Что мы пытаемся сделать, так это развернуть jenkins в контейнере, который может создавать и развертывать наши основные приложения .net в нашем частном репозитории. Дженкинсу требуется пакет SDK .net core для создания приложений и их развертывания в репозитории. Поэтому я думал просто включить .net sdk в тот же образ, что и Jenkins. В противном случае нам нужно не запускать Jenkins в контейнере.   -  person Michael C    schedule 25.01.2018


Ответы (4)


В этом ответе вы можете использовать следующий файл Dockerfile, чтобы установить .NetCore 2 в контейнер Jenkins. Очевидно, вы можете пойти дальше и установить необходимые плагины и дополнительное программное обеспечение по мере необходимости. Я надеюсь, что это помогает вам!

FROM jenkins/jenkins:lts
 # Switch to root to install .NET Core SDK
USER root

# Just for my sanity... Show me this distro information!
RUN uname -a && cat /etc/*release

# Based on instructiions at https://docs.microsoft.com/en-us/dotnet/core/linux-prerequisites?tabs=netcore2x
# Install depency for dotnet core 2.
RUN apt-get update \
    && apt-get install -y --no-install-recommends \
    curl libunwind8 gettext apt-transport-https && \
    curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg && \
    mv microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpg && \
    sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-debian-stretch-prod stretch main" > /etc/apt/sources.list.d/dotnetdev.list' && \
    apt-get update

# Install the .Net Core framework, set the path, and show the version of core installed.
RUN apt-get install -y dotnet-sdk-2.0.0 && \
    export PATH=$PATH:$HOME/dotnet && \
    dotnet --version

# Good idea to switch back to the jenkins user.
USER jenkins
person Dennis Fazekas    schedule 04.02.2018
comment
Да, это то, что я в итоге сделал. Спасибо, я хотел опубликовать это на прошлой неделе, но отвлекся... - person Michael C; 05.02.2018

Вы можете запустить эти команды внутри контейнера 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

Или LTS-версия .NET Core

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

person Tomy    schedule 07.07.2018

Фантастический ответ Денниса, именно это я и сделал. Это также было хорошим введением в Docker :-)

Вот мой Dockerfile для Jenkins 2.249.2 (LTS на момент написания) в Debian 9 (растянутый):

# 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 работала без установки каких-либо путей.

Я предполагаю, что когда будет выпущена более новая версия Jenkins, использующая Debian 10, я просто обновлю строку FROM, а затем URL-адрес репозитория Microsoft.

person Shahin Dohan    schedule 31.10.2020

Я считаю, что вместо этого вы должны следовать нижеприведенному подходу:

  1. Разработайте основное приложение asp.net и зарегистрируйтесь в Git (любой системе управления версиями).

  2. Иметь сервер сборки, на котором установлены Jenkins, .Net Core, Docker.

  3. Настройте Jenkins для связи с Git (веб-перехватчик/опрос — чтобы узнать, есть ли проверка)

  4. И настройте задание Jenkins, которое будет выполнять следующие действия.

    • Pull the latest from Git,
    • Восстановить,
    • Строить,
    • Опубликуйте основное приложение asp.net,
    • Создайте образ докера, который имеет возможность запускать в нем основное приложение asp.net.
    • Загрузите только что созданный образ Docker в Docker Hub.

Возможно, вы не захотите делать это точно так, как указано выше, особенно в части управления версиями. Но этот подход работает хорошо. Я перешел по этой ссылке в то время как я сделал вышеуказанную настройку.

Надеюсь, поможет. Спасибо!

person Netaji Bandi    schedule 28.01.2018