【问题标题】:gitlab CI + Docker + .NET Core, I don't understand why only an older .net version is installedgitlab CI + Docker + .NET Core,我不明白为什么只安装了一个旧的.net版本
【发布时间】:2020-01-05 17:35:03
【问题描述】:

我有一个 gitlab CI 文件,它正在构建这样的项目:

image: 'docker/compose:1.25.1-rc1'
services:
    - 'docker:dind'
variables:
    GIT_SUBMODULE_STRATEGY: recursive

    stages:
        - build
        - deploy

    buildCode:
        stage: build
        except:
          - deploy
        script:
            - docker build -t dataserver -t ${CI_REGISTRY}/${CI_PROJECT_PATH}:latest -f dockerfile .

    deployCode:
        stage: deploy
        only:
          - deploy
        script:
            - docker build -t dataserver -t ${CI_REGISTRY}/${CI_PROJECT_PATH}:latest -f dockerfile .
            - docker login registry.gitlab.com -u ${CI_REGISTRY_USER} -p ${CI_REGISTRY_PASSWORD}
            - docker push ${CI_REGISTRY}/${CI_PROJECT_PATH}:latest        
            - docker network create network && echo 'creating network'
            - docker-compose -f docker-compose.yml pull
            - docker-compose -f docker-compose.yml rm -f -s
            - docker-compose -f docker-compose.yml up -d

思路是用docker/compose:1.25.1-rc1自带一个docker-compose环境,构建文件。

docker 文件本身正在调用此映像来构建

来自 mcr.microsoft.com/dotnet/core/sdk:3.1 作为构建

然后将此图像用于运行时:

最终来自 mcr.microsoft.com/dotnet/core/aspnet:3.1

所以应该安装 .net 3.1。

但是,当我运行应用程序时,我得到了这个:

(我无法进行文本捕获,所以这是截图)

这意味着 .net 3.1 未安装,我无法找出问题所在。 如果我为 3.0 编译应用程序,使用相同的 CI 设置,它就会运行。

【问题讨论】:

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


    【解决方案1】:

    在构建你的图像之前,尝试强制对图像进行 docker 图像拉取。

    似乎你的 aspnet:3.1 拉的时候刚好有3.1.0预览版。

    3.1 标签始终指向最后一个 3.1.xxx 版本。

    在发布之前是预览版.. 现在是 3.1.0... 未来将是 3.1.x。

    如果您已经拉取了带有标签 3.1 的图像,您的构建将使用 met 图像。这可能不是远程存储库中的当前 3.1。如果你拉它,哈希会被验证,如果需要会更新图像

    【讨论】:

    • 既然我们正在运行我们自己的 ci 代理,那么简单地擦除它们是否有意义,所以没有剩余缓存,然后重新启动它们?
    • @Thomas 你使用的是什么 gitlab-runner 执行器?如果您使用的是 shell 运行程序,则图像缓存在 docker 中,擦除运行程序和/或重新启动 gitlab 运行程序不会清除缓存的图像.. 您可以添加一个作业来更新 netcore 图像或只添加拉取构建作业中的命令..
    • @Thomas,我看到您的部署工作仍在构建映像,我建议删除这些构建并让构建工作创建/构建您所需的所有映像,部署工作只需登录/ 拉取你构建的图像 / 并提升服务。我不知道为什么你有这个 docker build in deploy 的工作
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-15
    • 2011-03-23
    • 2016-01-16
    • 1970-01-01
    相关资源
    最近更新 更多