我有以下 github 操作來構建和發布 docker 影像:
# Build and push Docker image with Buildx (don't push on PR)
# https://github.com/docker/build-push-action
- name: Build and push Docker image
uses: docker/build-push-action@ad44023a93711e3deb337508980b4b5e9bcdc5dc
with:
context: .
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
secrets: |
"AUTHORITY=${{ secrets.AUTHORITY }}"
"CLIENTID=${{ secrets.CLIENTID }}"
這些應該被轉移到 Dockerfile:
# Build runtime image
FROM mcr.microsoft.com/dotnet/aspnet:5.0
RUN --mount=type=secret,id=AUTHORITY \
--mount=type=secret,id=CLIENTID \
export AUTHORITY=$(cat /run/secrets/AUTHORITY) && \
export CLIENTID=$(cat /run/secrets/CLIENTID) && \
WORKDIR /ProjectName/App
這似乎創建了一個 var/run/secrets 檔案夾,但其中沒有內容。如果我省略整個 RUN --mount 部分,則不會創建 secrets 檔案夾。
此外,我正在嘗試在我的 startup.cs 中訪問此配置:
{
Environment.SetEnvironmentVariable("AUTHORITY", Configuration["AUTHORITY"]);
Environment.SetEnvironmentVariable("CLIENTID", Configuration["CLIENTID"]);
}
不確定這是否是正確的方法,但是當我運行 docker 映像并訪問 localhost 以查看它是否有效時,它會引發與重定向到 Open ID Authority 相關的錯誤,因為這些環境變數最終為空字串。弄清楚如何做最后一部分無論如何都是徒勞的,因為我認為秘密在 Dockerfile 步驟中丟失了。我需要讓那部分作業來弄清楚最后一部分。所以這就是目前的主要問題。
有什么線索嗎?
uj5u.com熱心網友回復:
您可以使用ARGS來解決問題。
下面的代碼片段可能對您有所幫助。
- name: build docker image
run: docker build -t ${{ steps.meta.outputs.tags }} --build-arg AUTHORITY=$AUTHORITY -- build-arg CLIENTID=$CLIENTID .
env:
CLIENTID: ${{ secrets.CLIENTID }}
AUTHORITY: ${{ secrets.AUTHORITY }}
在 Dockerfile 中,添加這些
# Build runtime image
FROM mcr.microsoft.com/dotnet/aspnet:5.0
ARGS AUTHORITY
ARGS CLIENTID
WORKDIR /ProjectName/App
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/326494.html
