<分区>
标签 git docker ssl ssh composer-php
<分区>
我有一个 Docker 容器,它正在启动一个在私有(private)仓库中具有依赖项的项目。
Dockerfile
正在复制我的无密码 SSH key (权限为 600
和 644
):
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/