docker - gitlab CI + Docker + .NET Core,我不明白为什么只安装了一个旧的.net版本
问题描述
我有一个 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 文件本身正在调用此映像来构建
FROM mcr.microsoft.com/dotnet/core/sdk:3.1 作为构建
然后将此图像用于运行时:
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 作为最终版本
所以应该安装.net 3.1。
但是,当我运行该应用程序时,我得到了这个:
(我无法进行文本捕获,所以这是截图)
这意味着未安装 .net 3.1,我无法找出问题所在。如果我使用相同的 CI 设置为 3.0 编译应用程序,它就会运行。
解决方案
在构建你的图像之前,尝试强制对图像进行 docker 图像拉取。
似乎你的 aspnet:3.1 当你拉它的时候刚刚有 3.1.0-preview 版本。
3.1 标签总是针对最后的 3.1.xxx 版本。
发布之前是预览版……现在是 3.1.0……未来将是 3.1.x。
如果您已经提取了带有标签 3.1 的图像,您的构建将使用 met 图像。这可能不是远程存储库中的当前 3.1。如果你拉它,哈希会被验证,如果需要会更新图像
推荐阅读
- php - PHP SOAP 添加信封请求
- markdown - 如何在 Markdown 中使用 $?
- sql - 以用户指定的顺序存储数据
- javascript - 更改 Magnify.js 的镜头位置
- csv - BigQuery EXPORT sql 正在分片小查询结果
- xamarin - 该应用程序已在 Xamarin 中终止 iOS
- html - 为什么绝对定位的孩子和具有 1px 边框的父母之间存在差距
- magento2 - 结帐加载程序不断加载 Magento 2.3.7
- python-3.x - 执行 Python 代码 JSONDecodeError 时出错:预期值:第 1 行第 81870 列(字符 81869)
- c++ - 代码无法在 C++ 中将浮点数检测为大于 0