gitlab CI+;Docker+。NET内核,我不';我不理解为什么只安装较旧的.net版本
我有一个gitlab CI文件,它正在构建如下项目: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:
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