git - Docker 中的 Composer 未通过私有(private)仓库的验证

标签 git docker ssl ssh composer-php

<分区>

我有一个 Docker 容器,它正在启动一个在私有(private)仓库中具有依赖项的项目。

Dockerfile 正在复制我的无密码 SSH key (权限为 600644):

COPY docker/config/id_rsa /root/.ssh/
COPY docker/config/id_rsa.pub /root/.ssh/

复制后,安装 Composer 依赖项:

RUN echo *** >> /etc/hosts \
  && composer config -a -g *URL *USER *PASS \
  && composer install --prefer-dist --no-progress

与此同时,我删除了 composer.lock 以确保之前的安装不会留下任何东西。

composer 的存储库部分如下所示:

"repositories": [
    {
        "type": "vcs",
        "url": "git@***:***/libs/***.git",
        "options": {
            "ssl": {
                "local_cert": "~/.ssh/id_rsa.pub"
            }
        }
    },
],

在创建容器的过程中,我收到一条错误消息:

[RuntimeException]
Failed to execute git clone --mirror 'git@***:***/libs/***.git' '/root/.composer/cache/vcs/.../'
Cloning into bare repository '/root/.composer/cache/vcs/...'...
Host key verification failed.
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.

存储库确实存在,SSH key 有效,最奇怪的是...如果我省略 composer install 命令并输入创建的容器,不做任何更改并从终端手动执行,它安装一切。

编辑:

我也曾尝试在 RUN 命令中手动写入 key ,如果它们在容器创建期间不可用的话,但这并没有帮助。

我还尝试从 Composer 中删除 "options" 部分

最佳答案

RUN 命令中缺少的是这些部分:

echo "xxx.xxx.xxx.xxx my_server_name" >> /etc/hosts

ssh-keyscan -t rsa my_server_name >> ~/.ssh/known_hosts 

一旦完成,我就可以从 Composer 中完全省略 "options" 部分

关于git - Docker 中的 Composer 未通过私有(private)仓库的验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57089742/

上一篇:azure - https kubernetes 部署的应用程序

下一篇:apache - SSL 问题。 NET::ERR_CERT_DATE_INVALID

相关文章:

java - 可以响应 git 命令的本地嵌入式 HTTP 服务器?

http - JW Player 不适用于 https

caching - https over http - 这是否意味着下载更多 MB?

当 send_mail 在 Apache2.4 后面时,Django 1.10 SSLv2_method 导入错误

git - git历史可以伪造吗?

git - Visual Studio 2013 配置远程 Git 存储库

git - Kdiff3 无法使用 mergetool 命令打开

docker - 使用 docker-compose.yml 部署

java - Docker:Java 8 安装在 Ubuntu 上失败

ubuntu - 如何检查 ubuntu docker 的 syslog