如何使用SSH安装Docker Image内部的私有GIT托管依赖项
#python #安全 #devops #docker

介绍

本快速指南将向您展示如何在构建时间内将SSH键安装在容器中,以允许您安装私人依赖项,这不会在最终图像中持续存在。它使用Python,但可以与使用GIT + SSH的任何语言/软件包管理器一起使用。

Dockerfile

首先,您需要将Dockerfile语法设置为docker/dockerfile:1.2。将其放在文件的开始中:

# syntax = docker/dockerfile:1.2

现在安装git和openssh,并设置SSH文件夹:

RUN apt update && \
    apt install -y git openssh-client && \
    mkdir -p /root/.ssh && \
    ssh-keyscan github.com >> /root/.ssh/known_hosts

可能会根据您使用的基本图像而有所不同,只需与您使用的软件包管理器更改。

确保用您的git主机更改github.com

现在,您必须将SSH键安装在安装依赖项的步骤中:

RUN --mount=type=secret,id=id_rsa,dst=/root/.ssh/id_rsa \
    pip install git+ssh://git@github.com/username/repository.git@version

这将安装id_rsa/root/.ssh/id_rsa上确定的秘密。

建筑

构建时,您需要将SSH密钥指定为id_rsa Secret:

docker build . \
    -f Dockerfile \
    --secret id=id_rsa,src=/home/user/.ssh/id_rsa

或使用Docker组成:

version: '3.7' 
services:
  your_service:
    build:
      context: .
      dockerfile: Dockerfile
      secrets:
        - id_rsa
secrets:
  id_rsa:
    file: /home/user/.ssh/id_rsa

最终文件

# syntax = docker/dockerfile:1.2

FROM python:3.11

RUN apt update && \
    apt install -y git openssh-client && \
    mkdir -p /root/.ssh && \
    ssh-keyscan github.com >> /root/.ssh/known_hosts

RUN --mount=type=secret,id=id_rsa,dst=/root/.ssh/id_rsa \
    pip install git+ssh://git@github.com/username/repository.git@version

结论

将您的秘密保密!