gitlab CI+;Docker+。NET内核,我不';我不理解为什么只安装较旧的.net版本

gitlab CI+;Docker+。NET内核,我不';我不理解为什么只安装较旧的.net版本,docker,.net-core,gitlab,gitlab-ci,Docker,.net Core,Gitlab,Gitlab Ci,我有一个gitlab CI文件,它正在构建如下项目: image: 'docker/compose:1.25.1-rc1' services: - 'docker:dind' variables: GIT_SUBMODULE_STRATEGY: recursive stages: - build - deploy buildCode: stage: build except:

我有一个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作为最终版本

因此,应安装.NET3.1

但是,当我运行应用程序时,我得到以下信息:

(我无法进行文本捕获,因此这是一个屏幕截图)

这意味着没有安装.NET3.1,我无法找出问题所在。
如果我使用相同的CI设置编译3.0版的应用程序,它会运行。

在构建你的应用程序之前,请尝试强制docker镜像

似乎你的aspnet:3.1 当你拉它的时候,它刚刚有了3.1.0预览版

3.1标签始终指向最后的3.1.xxx版本

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


如果您已经拉取了标签为3.1的图像,您的构建将使用met图像。这可能不是远程存储库中当前的3.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 executor?如果您使用的是shell运行程序,那么映像将缓存在docker中,擦除运行程序和/或重新启动gitlab运行程序将不会清理缓存的映像。。您可以添加一个作业来更新netcore映像,或者只在构建作业中添加pull命令。@Thomas,我看到您的部署作业仍在构建映像,我建议删除这些构建,让构建作业创建/构建所有必需的映像,而部署工作只需登录/拉取您构建的映像/并启动服务。我不知道为什么部署的作业中有这个docker build,因为我们正在运行我们自己的ci代理,简单地擦除它们,这样就没有缓存了,然后重新启动它们有意义吗?@Thomas您使用的是gitlab runner executor吗?如果您使用的是shell运行程序,那么映像将缓存在docker中,擦除运行程序和/或重新启动gitlab运行程序将不会清理缓存的映像。。您可以添加一个作业来更新netcore映像,或者只在构建作业中添加pull命令。@Thomas,我看到您的部署作业仍在构建映像,我建议删除这些构建,让构建作业创建/构建所有必需的映像,而部署工作只需登录/拉取您构建的映像/并启动服务。我不知道你为什么在部署的工作中有这个docker build