Docker中的Composer未通过私人仓库验证

时间:2019-07-18 08:01:10

标签: git docker ssl ssh composer-php

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

Dockerfile正在复制我的无密码SSH密钥(权限为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,以确保以前的安装没有任何保留。

来自作曲家的存储库部分看起来像这样:

"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密钥有效,并且是最奇怪的...如果我省略composer install命令并输入创建的容器,则不做任何更改并从终端手动进行操作,它将安装所有内容。

编辑:

如果在容器创建期间无论如何都无法使用密钥,我也曾尝试在RUN命令中手动编写密钥,但这无济于事。

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

1 个答案:

答案 0 :(得分:0)

RUN命令中的以下部分丢失了:

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

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

完成后,我可以完全省略Composer中的"options"部分