如何使用未提交的本地证书文件通过 GitHub 操作构建 Docker 映像

Posted

技术标签:

【中文标题】如何使用未提交的本地证书文件通过 GitHub 操作构建 Docker 映像【英文标题】:How to build an Docker image with GitHub actions using uncommited local certificate files 【发布时间】:2022-01-20 22:43:47 【问题描述】:

我已经设置了一个 GitHub 操作工作流,当我将代码推送到我的存储库中的一个分支时,GitHub 操作帮助我构建该存储库的映像并将其推送到 Docker Hub,它工作正常。

问题是我现在有我想在本地保存的证书文件(即不推送到我的 GitHub 存储库)——但这也意味着 GitHub 操作在构建图像时无权访问它们,因此,它们不会包含在 Docker Hub 上的构建映像中,我用来从生产服务器中提取这些映像 - 我现在没有证书文件。 如何设置 GitHub 操作以使用本地文件以某种方式构建图像?或者有没有更好的方法来解决这个问题?

我的 GitHub 操作文件

name: Build and deploy project to Docker Hub

on:
 push:
   branches:
     - master

jobs:


 build:
   runs-on: 'ubuntu-latest'

   steps:
   - uses: actions/checkout@v2

   - name: Set up Docker Buildx
     uses: docker/setup-buildx-action@v1

   - name: Log in to Docker Hub - Main web app container registry
     uses: docker/login-action@v1
     with:
       username: $ secrets.USERNAME 
       password: $ secrets.PASSWORD 

   - name: Build and push Main web app container image to registry
     uses: docker/build-push-action@v2
     with:
       push: true
       tags: $ secrets.USERNAME /project:latest
       file: ./Dockerfile.prod

【问题讨论】:

【参考方案1】:

现在我觉得自己很愚蠢:)

我全神贯注于如何通过将其包含在映像的构建阶段来解决它,但没有想到当您启动构建的映像时,您可以选择使用驻留在您正在启动 docker 映像的机器。

很简单:

    使用 SCP 将包含我的证书文件的文件夹从我的 GitHub 存储库的本地版本复制到我的服务器上的远程版本的存储库,例如:

scp -r $(pwd)/Certificates_prod user@server:/path/to/repo/on/server

    进入您的 docker-compose 文件并进入应该使用证书文件的容器下,并将文件夹添加为已安装的卷,例如:
restart: always
image: index.docker.io/username/reponame
command: gunicorn myrepo.wsgi:application --bind 0.0.0.0:8000 
volumes:
  - /local/path/to/Certificates_prod:/remote/path/to/your/repo

【讨论】:

以上是关于如何使用未提交的本地证书文件通过 GitHub 操作构建 Docker 映像的主要内容,如果未能解决你的问题,请参考以下文章

github使用——如何恢复被删去文件。

如何解决这个问题 签名无效,或者不是用苹果提交证书签名的。 (-19011)

如何单独为子域名启用 SSL,即使用 HTTPS 访问

如何使用git工具向github提交代码

如何区分本地未提交的更改和来源

SVN的安装和使用