簡體   English   中英

Gitlab CI/CD 管道給出 Dockerfile 錯誤

[英]Gitlab CI/CD pipeline giving Dockerfile error

晚上好,我正在嘗試將我的 nodeJS 應用程序部署到我的 Digital Ocean 服務器,它說它找不到我的 Dockerfile。 我確實檢查了 Dockerfile 沒有.txt 擴展名。 任何指導表示贊賞。 我在 Gitlab 項目中設置了變量。 管道拋出以下錯誤:“$ chmod og= $ID_RSA chmod: unrecognized option: ---BEGIN BusyBox v1.31.1 () multi-call binary. Usage: chmod [-Rcvf] MODE[,MODE]... FILE ... 每個 MODE 是一個或多個字母 ugoa、一個符號 +-= 和一個或多個字母 rwxst -R 遞歸 -c 列出更改的文件 -v 列出所有文件 -f 隱藏錯誤”

 stages: - build - publish - deploy variables: TAG_LATEST: $CI_REGISTRY_IMAGE/$CI_COMMIT_REF_NAME:latest TAG_COMMIT: $CI_REGISTRY_IMAGE/$CI_COMMIT_REF_NAME:$CI_COMMIT_SHORT_SHA build: image: node:latest stage: build script: - npm install - echo "ACCOUNT_SID=$ACCOUNT_SID" >>.env - echo "AUTH_TOKEN=$AUTH_TOKEN" >>.env - echo "API_KEY=$API_KEY" >>.env - echo "API_SECRET=$API_SECRET" >>.env - echo "PHONE_NUMBER=$PHONE_NUMBER" >>.env - echo "sengrid_api=$sengrid_api" >>.env publish: image: docker:latest stage: publish services: - docker:dind script: - docker build. -t $TAG_COMMIT -t $TAG_LATEST - docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN $CI_REGISTRY - docker push $TAG_COMMIT - docker push $TAG_LATEST deploy: image: alpine:latest stage: deploy tags: - deployment script: - chmod og= $ID_RSA - apk update && apk add openssh-client - ssh -i $ID_RSA -o StrictHostKeyChecking=no $SERVER_USER@$SERVER_IP "docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN $CI_REGISTRY" - ssh -i $ID_RSA -o StrictHostKeyChecking=no $SERVER_USER@$SERVER_IP "docker pull $TAG_COMMIT" - ssh -i $ID_RSA -o StrictHostKeyChecking=no $SERVER_USER@$SERVER_IP "docker container rm -f my-app || true" - ssh -i $ID_RSA -o StrictHostKeyChecking=no $SERVER_USER@$SERVER_IP "docker run -d -p 80:3000 --name my-app $TAG_COMMIT" environment: name: production url: http://167.172.225.124 only: - master

首先檢查docker 構建參數順序是否正確:

代替:

docker build -t $TAG_COMMIT -t $TAG_LATEST .

我會嘗試:

docker build . -t $TAG_COMMIT -t $TAG_LATEST

當您運行此構建命令時,還要檢查您是否處於正確的路徑中。
並且有一個名為Dockerfile的文件( docker build所需的默認名稱)。


關於錯誤:

chmod og= $ID_RSA 
chmod: unrecognized option: ---BEGIN

您需要將chmod應用於文件,而不是文件內容
變量ID_RSA包括密鑰本身,而不是密鑰文件名。

使用~/.ssh/id_rsa而不是$ID_RSA

如果您像我一樣遵循本教程(看起來就是這種情況),看起來本教程假定在主分支上運行,受保護。

我在另一個不受保護的分支上運行。 所以我必須取消保護所有變量才能在不受保護的分支上工作。 作業立即成功。

確保您的 ID_RSA 變量是類型:文件

chmod og= $ID_RSA 

對我來說它不起作用,因為我最后復制了沒有斷線符號的密鑰,結果證明這很重要。 嘗試了很多解決方案,在我得到這個 / 之前花了將近一天的時間。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM