在 Flask 项目中的 docker-compose 构建过程中访问 ssh 密钥

cha*_*ani 5 python ssh flask docker docker-compose

一般来说,我的问题是关于在 docker-compose 构建期间能够访问 ssh 密钥。

当我使用 docker-compose.yml 文件中的卷映射运行 docker-compose up 时,我可以访问我的 ssh 密钥,如下所示:

services:
    flask:
        volumes:
            - ~/.ssh:/root/.ssh
Run Code Online (Sandbox Code Playgroud)

但我无法在 docker-compose 构建期间访问它们

更多细节

我正在运行一个 python Flask 应用程序。我想将私人 git 存储库安装为 pip 包。所以我将这一行添加到requirements.txt

git+ssh://git@github.com/username/repo_name.git@branch_name
Run Code Online (Sandbox Code Playgroud)

如果我在服务中运行 bash,docker-compose run flask bash那么我可以手动运行pip install git+ssh://git@github.com/username/repo_name.git@branch_name并且这可以工作,因为我有到 ssh 键的卷映射。

但是当我运行 docker-compose build 时,它无法访问私有 git 存储库,因为它无权访问 ssh 密钥。

任何人都知道是否有办法让 docker-compose 构建对 ssh 密钥的访问权限,或者解决此问题的其他方法?

cha*_*ani 2

ssh 比仅使用用户名:密码更难设置。这是我添加到requirements.txt 中使其正常工作的行:

-e git+https://<username>:<password>@github.com/<path to git repo>.git#egg=<package_name>
Run Code Online (Sandbox Code Playgroud)

如果你想获得特定的标签,那么你可以这样做:

-e git+https://<username>:<password>@github.com/<path to git repo>.git@<tag_name>#egg=<package_name>
Run Code Online (Sandbox Code Playgroud)

您可以使用任何有权访问 git 存储库的用户名和密码,但出于明显的安全原因,我建议您不要使用主 git 帐户。专门为此项目创建一个新用户,并授予他们访问权限。