gpt4 book ai didi

docker - Heroku 环境变量 $DATABASE_URL 和 $PORT 未在 dyno 中显示(heroku ps :exec)

转载 作者:行者123 更新时间:2023-12-02 19:47:58 24 4
gpt4 key购买 nike

我已经创建了一个 docker 镜像并将其发布到 heroku。为了让它正常工作,我需要 DATABASE_URL环境变量。 Postgres 已配置到应用程序,我可以 heroku config:get db URL 就好了。然而毕竟完成了我heroku ps:exec进入我的应用程序,输入“env”,没有 $PORT$DATABASE_URL ,这意味着我的应用程序无法获取 db 字符串。
我采取的步骤:
Github 操作:

    - name: Build and deploy the Docker image
env:
HEROKU_API_KEY: ${{ secrets.HEROKU_API_KEY }}
APP_NAME: myApp
run: |
export DATABASE_URL=$(heroku config:get DATABASE_URL --app ${{ env.APP_NAME }})
docker login --username=_ --password=${{ env.HEROKU_API_KEY }} registry.heroku.com
docker build --build-arg DATABASE_URL_ARG=$DATABASE_URL -t registry.heroku.com/${{ env.APP_NAME }}/web .
docker push registry.heroku.com/${{ env.APP_NAME }}/web
Dockerfile:
FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS publish
WORKDIR /src
ARG DATABASE_URL_ARG
ENV DATABASE_URL=$DATABASE_URL_ARG
COPY . .
RUN dotnet tool install dotnet-ef && dotnet publish -c Release -o ./publish

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 AS runtime
ENV DATABASE_URL=$DATABASE_URL_ARG
WORKDIR /app
COPY --from=publish /src/publish .
CMD DATABASE_URL=${DATABASE_URL} dotnet app.dll
构建过程成功并且 postgres 数据库被播种。
我不知道是否需要第二个 ENV,它是我试图使某些东西起作用的工件。
所以问题是:丢失的 $PORT 和 $DATABASE_URL 在哪里,我是如何让它们消失的?

最佳答案

在我看来你的问题是 an ARG instruction goes out of scope at the end of the build stage where it was defined ,因此您还需要在构建的第二阶段定义的 ARG:

# ...
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 AS runtime
ARG DATABASE_URL_ARG
ENV DATABASE_URL=$DATABASE_URL_ARG
WORKDIR /app
COPY --from=publish /src/publish .
CMD DATABASE_URL=${DATABASE_URL} dotnet app.dll

关于docker - Heroku 环境变量 $DATABASE_URL 和 $PORT 未在 dyno 中显示(heroku ps :exec),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62502951/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com