如何使用未提交的本地证书文件通过 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 映像的主要内容,如果未能解决你的问题,请参考以下文章