linux - 在构建之前创建 dotenv 文件并使用 GitHub Actions 部署到 dockerhub
问题描述
在构建 Golang 应用程序之前以及将其部署到我的 DockerHub 存储库之前,我正在尝试使用 GitHub Secrets 创建一个 dotenv 文件。当我运行作业时,它实际上会创建文件,但是当我在容器中运行图像时,会显示一条消息,指出找不到 .env 文件。
这是我的 .yml 文件名:构建和推送图像
on:
push:
branches:
- 'main'
pull_request:
branches:
- 'main'
jobs:
dotenv:
runs-on: ubuntu-20.04
steps:
-
name: generate dotenv for go
run: |
echo DB_USER=${{ secrets.SECRET_USER_DB }} > .env
echo PASSWORD_DB=${{ secrets.SECRET_PASSWORD_DB }} > .env
echo HOST_DB=${{ secrets.SECRET_HOST_DB }} > .env
echo PORT_DB=${{ secrets.SECRET_PORT_DB }} > .env
echo NAME_DB=${{ secrets.SECRET_NAME_DB }} > .env
docker:
needs: dotenv
runs-on: ubuntu-20.04
steps:
-
name: Checkout
uses: actions/checkout@v2
-
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_PASSWORD }}
-
name: Build and push
uses: docker/build-push-action@v2
with:
context: .
push: true
repository: dall06/go_api_image
file: .docker/Dockerfile.prod
tags: dall06/go_api_image:latest
我的 Dockerfile 就是这个
FROM golang:latest
WORKDIR /app
# manage dependencies
COPY go.mod .
COPY go.sum .
RUN go mod download
COPY . .
ENV PORT 8080
RUN go build
CMD [ "./pssword-api-mysql" ]
解决方案
您正在 Ubuntu 机器中创建 .env 文件,在另一台 Ubuntu 机器中创建 docker 映像,该needs
关键字确保 docker 作业在 dotenv 作业之后运行。
您可以做的是,一起删除 dotenv 作业并在 docker build 作业本身中创建 dotenv 文件。
upload artifacts
或者,使用作业中的操作上传 .env ,并使用Docker 构建作业中的操作dotenv
下载工件。download artifacts
推荐阅读
- php - 如何将 database.mwb 添加到我的服务器用户架构
- angular - 使用分页结果配置数据表
- python - 更新django项目的最佳方法,跟踪更新
- c++ - c ++链接器错误'重定位R_X86_64_32反对`.rodata.str1.1'链接CXX共享库libsrt.so
- node.js - Bcrypt.compare() 仅返回 false,在 Promise 下使用
- node-red - 如何使用 node-red 节点动态设置值
- wpf - 如何使用 ReactiveObject 的数据验证作为我的 viewModel 的基类
- batch-file - 如何使某些东西在批处理关闭时运行
- spring-boot - spring boot、spring cloud中如何处理-Dlogging.level JVM参数
- visual-studio-2017 - 从 Visual Studio 2010 但不是 Visual Studio 2017 发布时单击应用程序工作一次