gpt4 book ai didi

docker - 带有 docker/build-push-action 和 GitHub Actions 的生产环境文件

转载 作者:行者123 更新时间:2023-12-04 11:43:54 72 4
gpt4 key购买 nike

我有以下 docker/build-push-action创建发布标签时在我的 GitHub 操作中运行的作业。

jobs:
docker:
runs-on: ubuntu-latest
steps:
-
name: Set up QEMU
uses: docker/setup-qemu-action@v1
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
-
name: Login to DockerHub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_TOKEN }}
-
name: Build and push
id: docker_build
uses: docker/build-push-action@v2
with:
push: true
tags: user/repo:latest
-
name: Image digest
run: echo ${{ steps.docker_build.outputs.digest }}
在我的 Dockerfile我有一个任务需要 .env.production并使它 .env .
COPY .env.production .env
这显然失败了,因为 .env.production 不包含在 Git 中。
我的问题是,如何在我的 GitHub 操作中发生类似的事情?我想过在 Build and push之前创建env文件但我认为该任务是从 docker 容器中的 main 中提取的,所以实际上看不到我创建的文件?或者如果有什么覆盖它。
实现这一目标的最佳方法是什么?
提前致谢

最佳答案

这就是我想出的。
文件

...
ARG ARG_ENV_SECRET
ARG ARG_ENV_SECRET_1
COPY ./env-script.sh ./
RUN ./env-script.sh
...
env-script.sh 此脚本创建 .env 文件
#!/bin/sh

touch .env
{
printf "ENV_SECRET=%sENV_SECRET_1=%s" "$ARG_ENV_SECRET" "ARG_ENV_SECRET_1"
} >> .env
docker-action.yml
...

jobs:
build:
runs-on: ubuntu-latest

steps:
- name: Build, tag, and push the image to Amazon ECR
id: build-image
env:
ENV_SECRET: ${{ secrets.ENV_SECRET }} #naming used below
ENV_SECRET_1: ${{ secrets.ENV_SECRET_1 }}
run: |
docker \
--build-arg ARG_ENV_SECRET=$ENV_SECRET #name declared above
--build-arg ARG_ENV_SECRET_1=$ENV_SECRET_1
build .
...
我很确定这不是最佳路线,但它对我们有用,因为我们使用第三方来运行我们的 AWS 服务。更好的方法是在启动实例时使用 AWS secret 。您可以阅读更多相关信息 here .

关于docker - 带有 docker/build-push-action 和 GitHub Actions 的生产环境文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67868501/

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