簡體   English   中英

帶有 docker/build-push-action 和 GitHub Actions 的生產環境文件

[英]Production ENV file with docker/build-push-action and GitHub Actions

創建發布標簽時,我有以下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 中提取的,所以實際上看不到我創建的文件嗎? 或者如果有什么覆蓋它。

實現這一目標的最佳方法是什么?

提前致謝

這就是我想出的。

Dockerfile

...
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 機密。 您可以在此處閱讀更多相關信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM