【发布时间】:2017-06-10 23:31:04
【问题描述】:
我正在尝试通过 GitHub 安装私有存储库 npm 包:
npm install --save-dev MyCompany/MyRepository#my-branch
它在我的主机系统上运行良好。但是,我们使用docker-compose 来编排我们所有的Docker 容器,尤其是我们的node 容器。
由于我们的 GitHub 存储库是私有的,我将 SSH 代理转发设置如下(简化)docker-compose.ymlsn-p 显示:
version: '2'
services:
node:
build: docker/node
environment:
- SSH_AUTH_SOCK=/ssh-agent
volumes:
- $SSH_AUTH_SOCK:/ssh-agent
user: "${UID}:${GID}"
我们使用主机 UID 和 GID 来防止文件权限出现一些问题。这些变量在启动docker-compose run 命令之前被导出。
然而,当我们尝试从容器启动安装命令时:
docker-compose run --rm --no-deps node bash -ci 'npm install'
我们遇到了连接问题 (Error connecting to repository. Please, check the url.)。
然后我们直接测试了一个 SSH 连接:
docker-compose run --rm --no-deps node bash -ci 'ssh -T git@github.com'
我们现在遇到了 SSH 连接问题:
uid 1000 不存在用户
有关系吗?我不知道。
一种解决方案可能是在启动命令之前创建一个具有主机 UID 的虚拟用户。然而,我怎样才能创造它?我无法在构建期间执行此操作(因为我无权访问 UID 环境变量),如果我在执行命令时尝试,我得到:
docker-compose run --rm --no-deps node bash -ci "sudo"
sudo: unknown uid 1000: who are you?
或者有其他解决方案吗?
【问题讨论】:
-
“我们正在使用主机 UID 和 GID 来防止文件权限出现一些问题”你能举个例子吗?
-
没有
user: "${UID}:${GID}"行的行为如何? -
请注意,我写了一篇博文详细介绍了这个
${UID}:${GID}部分以及我找到的解决方案:jonathan-petitcolas.com/2017/01/26/…