git - 无法在 docker-compose 中克隆存储库
问题描述
我正在尝试使用 docker-compose 将应用程序配置为在 localstack 上运行。尝试克隆资源库时出现错误。
setup-resources_1 | make[1]: [/app/ProjectRecipes.mk:35: clean] Error 2 (ignored)
setup-resources_1 | ServiceName=Tests make -C /app/ -f /app/ProjectRecipes.mk deploy
setup-resources_1 | git clone https://github.com/MyGithOrg/TestProject /Users/antarr.byrd/go/src/github.com/MyGithOrg/TestProject
setup-resources_1 | Cloning into '/Users/antarr.byrd/go/src/github.com/MyGithOrg/TestProject'...
localstack_1 | Waiting for all LocalStack services to be ready
setup-resources_1 | fatal: could not read Username for 'https://github.com': No such device or address
setup-resources_1 | make[4]: *** [/app/ProjectRecipes.mk:24: /Users/antarr.byrd/go/src/github.com/MyGithOrg/TestProject] Error 128
码头工人-compose.yml
version: '3'
services:
localstack:
image: localstack/localstack
ports:
- "53:53"
- "443:443"
- "4510-4520:4510-4520"
- "4566-4620:4566-4620"
- "${PORT_WEB_UI-8080}:${PORT_WEB_UI-8080}"
environment:
- LOCALSTACK_API_KEY=${LOCALSTACK_API_KEY}
- SERVICES=serverless,rds,lambda,sqs,dynamodb,s3,apigateway,stepfunctions,cloudformation,appsync,firehose,es
- DEBUG=1
- DATA_DIR=/tmp/localstack/data
- DOCKER_HOST=unix:///var/run/docker.sock
- HOST_TMP_FOLDER=${TMPDIR}
volumes:
- "${TMPDIR:-/tmp/localstack}:/tmp/localstack"
- "/var/run/docker.sock:/var/run/docker.sock"
networks:
- default
setup-resources:
image: golang:1.16.4-alpine3.13
entrypoint: /bin/sh -c
working_dir: /app
command: >
"
ls
apk add --update alpine-sdk
make Tests
"
networks:
- default
volumes:
- type: bind
source: ~/go
target: /go
- type: bind
source: ${HOME}
target: /root
- type: bind
source: .
target: /app
- ~/.ssh:/root/.ssh
- ~/.gitconfig:/root/.gitconfig
depends_on:
- localstack
解决方案
问题:
以下命令在您的容器中失败,因为它是一个交互式命令,需要用户输入username
并password
用于 GitHub。尽管在您的本地计算机中不是这种情况,但容器内部就是这种情况。我不知道差异的原因。
git clone https://github.com/MyGithOrg/TestProject /Users/antarr.byrd/go/src/github.com/MyGithOrg/TestProject
解决方案:
您可以使用以下命令通过 SSH 克隆您的存储库:
git clone ssh://git@github.com/MyGithOrg/TestProject.git /Users/antarr.byrd/go/src/github.com/MyGithOrg/TestProject
脚步:
更新您的克隆命令以使用上面的 SSH。
如果您尚未在 Github 配置文件中配置 SSH 密钥,则可以按照此文档进行操作。
⚠️请确保在此步骤中您能够在本地计算机上使用 SSH 克隆存储库。
更新您
command
的 docker-compose 文件以安装 SSH 客户端command: > " ls apk add --update alpine-sdk openssh make Tests "
如果您使用的是 Mac,请确保您的文件中有
IgnoreUnknown UseKeychain
上述内容。UseKeychain yes
~/.ssh/config
ℹ️ 原因是
openssh
您的 Golang Alpine 映像中安装的版本无法识别UseKeychain
选项并会引发Bad configuration option: usekeychain
错误。您可以在本文档中阅读更多相关信息。~/.ssh/config
正确文件示例:Host * AddKeysToAgent yes IgnoreUnknown UseKeychain UseKeychain yes IdentityFile ~/.ssh/id_rsa
然后更新您的
volumes
喜欢如下:volumes: - type: bind source: ~/go target: /go - type: bind source: . target: /app - ~/.ssh:/root/.ssh
请注意,您不再需要
~/.gitconfig:/root/.gitconfig
音量。HOME
我还删除了您对容器的目录映射,/root
因为我仍然怀疑它可能会导致问题。
我相信这现在应该对你有用。干杯!!!
推荐阅读
- python - 求解 Mod 多个方程
- python - 在复杂的嵌套字典/列表中搜索键、值对
- python - 为什么softmax分类器梯度除以批量大小(CS231n)?
- java - 使用 Itext PDF 创建 PDF 文件时出现空白页
- java - 我们可以将背包问题转换为对数时间吗?
- yacc - byacc/j 和 jflex 中的错误恢复使用 yacc 中的错误标记
- python - 在python中使用另一个函数的结果
- flutter - Flutter:如何使用 setter 重置值
- java - 有没有办法解决':app:checkDebugDuplicateClasses'。在颤振?
- php - 找不到类“数据库\播种机\”的问题