介绍
本快速指南将向您展示如何在构建时间内将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
结论
将您的秘密保密!