使用gitlab-ci在docker中构建.NET Core项目

时间:2017-02-20 21:41:38

标签: docker gitlab .net-core gitlab-ci

我想使用gitlab-ci自动化我的部署过程。我现在通过ssh手动执行此操作。步骤是:

构建

  • dotnet restore
  • dotnet publish

这给我留下了一个充满.dlls的目录。我想将它们部署到docker容器中,所以我运行:

  • docker build
  • docker stop
  • docker rm
  • docker run

但是,我很难找到在同一.gitlab.ci.yml文件中执行这两种操作的正确方法。

我需要来自microsoft/dotnet:latest的dotnet工具和来自docker:latest的docker cli工具。

我尝试了基于这些图像的两个阶段,但输出不是共享的。为了解决这个问题,我尝试使用artifact,但无法上传。

我无法在网上找到任何这样的例子,所以我想知道我是否做了一些不应该做的事情。

1 个答案:

答案 0 :(得分:1)

不完全确定您为什么在构建管道中执行docker run,以及为什么artifact不起作用。我们正在使用artifactdependencies

进行分阶段处理

无论如何,必须自定义构建映像才能满足您的需求。对于您的构建图像,您似乎需要dockerdotnet一起使用。创建一个Dockerfile,您将其用作构建图像,并让它从microsoft/dotnet继承。然后在该图片中安装docker。请记住在/var/run/docker.sock中挂载,以便容器可以使用docker守护程序。

您的新Dockerfile将如下所示:

FROM microsoft/dotnet

RUN echo deb http://apt.dockerproject.org/repo debian-jessie main > /etc/apt/sources.list.d/docker.list && \
apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D && \
apt-get update && \
apt-get install -y docker-engine

要在计算机上运行图像,请使用

docker run -it --rm -v /var/run/docker.sock:/var/run/docker.sock yournewimage

您将GitLab配置为在转轮配置文件中装载/var/run/docker.sock,然后您可以在gitlab-ci.yml中使用新图像。