通常我将以下图像用于 .net core 3.1 并且它工作正常。
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build
Run Code Online (Sandbox Code Playgroud)
我出于实验原因启动了一个新的 .net 5 项目并创建dockerfile了以下内容
FROM mcr.microsoft.com/dotnet/core/aspnet:5.0-buster-slim AS base
FROM mcr.microsoft.com/dotnet/core/sdk:5.0-buster AS build
Run Code Online (Sandbox Code Playgroud)
并有以下问题:
=> ERROR [internal] load metadata for mcr.microsoft.com/dotnet/core/sdk:5.0-buster 0.2s
=> ERROR [internal] load metadata for mcr.microsoft.com/dotnet/core/aspnet:5.0-buster-slim 0.2s
=> CANCELED [build 1/7] FROM mcr.microsoft.com/dotnet/core/sdk:5.0-buster 0.0s
=> => resolve mcr.microsoft.com/dotnet/core/sdk:5.0-buster 0.0s
=> [internal] load build context 0.0s
=> ERROR [base 1/2] FROM mcr.microsoft.com/dotnet/core/aspnet:5.0-buster-slim 0.0s
=> => resolve mcr.microsoft.com/dotnet/core/aspnet:5.0-buster-slim
Run Code Online (Sandbox Code Playgroud) 我的项目中有几个 Dockerfile。一种是用于构建basic图像,其中包含一些业务级别的抽象。其他人正在根据basic图像构建服务。
所以在我的服务的 Dockerfiles 中,我有类似的东西
FROM my-project/base
# Adding some custom logic around basic stuff
Run Code Online (Sandbox Code Playgroud)
我使用 GitHub Actions 作为我的 CI/CD 工具。起初我有一个步骤将 docker 安装到我的工人中,然后运行如下:
- name: Build base image
working-directory: business
run: docker build -t my-project/base .
- name: Build and push service
working-directory: service
run: |
docker build -t my-ecr-repo/service .
docker push my-ecr-repo/service
Run Code Online (Sandbox Code Playgroud)
但是后来我找到了 docker/build-push-action 并决定在我的管道中使用它:
- name: Build business-layer container
uses: docker/build-push-action@v2
with:
load: true
tags: my-project/base
context: business
file: business/Dockerfile
- name: Build …Run Code Online (Sandbox Code Playgroud)