![](/img/trans.png)
[英]Error executing docker-compose: Building webserver unable to prepare context: unable to 'git clone' to temporary context directory: error fetching
[英]Unable to clone repository in 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
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
以下命令在您的容器中失敗,因為它是一個交互式命令,需要用戶輸入 GitHub 的用戶username
和password
。 盡管在您的本地計算機中不是這種情況,但容器內部就是這種情況。 我不知道差異的原因。
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 克隆 repo。
更新 docker-compose 文件中的command
以安裝 SSH 客戶端
command: > " ls apk add --update alpine-sdk openssh make Tests "
如果您使用的是 Mac,請確保在~/.ssh/config
文件中的UseKeychain yes
上方有IgnoreUnknown UseKeychain
。
ℹ️ 原因是你的 Golang Alpine 鏡像中安裝的
openssh
版本無法識別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
,因為我仍然懷疑它可能會導致問題。
我相信這現在應該對你有用。 干杯!!!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.