#linux #docker #ssh #nestjs
#linux #докер #ssh #nestjs
Вопрос:
Может ли кто-нибудь помочь мне исправить эту ошибку?
Я пробовал несколько решений для stackoverflow, но ни одно из них не может исправить ошибку, с которой я столкнулся.
кто-нибудь может помочь мне исправить эту ошибку.
Я застрял в решении этой проблемы, и, пожалуйста, скажите мне, какая часть в моем скрипте неверна.
Из-за этой проблемы моя работа застряла, в результате чего график внедрения был отложен на неопределенное время.
GitLab-ci.yml
stages:
- build_push
variables:
DOCKER_REPO: repo
DOCKER_USER: user
DOCKER_PASSWORD: password
CI_COMMIT_TAG: latest
SERVICE_NAME: service
build_push:
stage: build_push
script:
- docker login -u $DOCKER_USER -p $DOCKER_PASSWORD
- echo "building docker image"
- docker build -t $DOCKER_REPO:$CI_COMMIT_SHORT_SHA .
- docker build -t $DOCKER_REPO:$CI_COMMIT_TAG .
- echo "pushing image to docker hub"
- if [ $CI_COMMIT_BRANCH = "develop" ]; then docker push $DOCKER_REPO:$CI_COMMIT_SHORT_SHA; fi
- if [ -n "$CI_COMMIT_TAG" ]; then docker push $DOCKER_REPO:$CI_COMMIT_TAG ; fi
- echo "docker image $SERVICE_NAME has been successfully pushed to docker hub"
only:
- develop
Dockerfile
FROM node:lts-alpine as build-stage
RUN apk update
RUN apk add openssh
RUN mkdir /root/.ssh amp;amp; chmod 0700 /root/.ssh
RUN touch /root/.ssh/known_hosts
RUN ssh-keyscan -t rsa 172.168.85.74 >> /root/.ssh/known_hosts
RUN npm config set strict-ssl false
RUN npm config set proxy ${http_proxy}
RUN npm config set https-proxy ${http_proxy}
WORKDIR /usr/src/app
COPY package.json .
RUN npm install
COPY . .
RUN npm run build
FROM node:lts-alpine as production-stage
RUN apk update
RUN apk add openssh
RUN mkdir /root/.ssh amp;amp; chmod 0700 /root/.ssh
RUN touch /root/.ssh/known_hosts
RUN ssh-keyscan -t rsa 172.168.85.74 >> /root/.ssh/known_hosts
RUN npm config set proxy ${http_proxy}
RUN npm config set https-proxy ${http_proxy}
ARG NODE_ENV=production
ENV NODE_ENV=${NODE_ENV}
WORKDIR /usr/src/app
COPY package.json ./
RUN npm install
COPY . .
COPY --from=build /usr/src/app/dist ./dist
CMD [ "node", "dist/main" ]
Журнал GitLab
Running with gitlab-runner 13.5.0 (ece86343)
on auth-runner 3tZsAfwR
Preparing the "shell" executor
00:00
Using Shell executor...
Preparing environment
00:00
Running on prodi...
Getting source from Git repository
00:01
Fetching changes with git depth set to 50...
Reinitialized existing Git repository in /home/gitlab-runner/builds/3tZsAfwR/0/universitas-terbuka/praktik-ut-auth/.git/
Checking out b51d2149 as panca-test-docker...
Skipping Git submodules setup
Executing "step_script" stage of the job script
$ docker login -u $DOCKER_USER -p $DOCKER_PASSWORD
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
WARNING! Your password will be stored unencrypted in /home/gitlab-runner/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded
$ echo "building docker image"
building docker image
$ docker build -t $DOCKER_REPO:$CI_COMMIT_SHORT_SHA .
Step 1/30 : FROM node:lts-alpine as build-stage
---> 7f1893c3ede0
Step 2/30 : RUN apk update
---> Using cache
---> f3c135d9ba44
Step 3/30 : RUN apk add openssh
---> Using cache
---> a2095837bd75
Step 4/30 : RUN mkdir /root/.ssh amp;amp; chmod 0700 /root/.ssh
---> Using cache
---> 074d7c835ebb
Step 5/30 : RUN touch /root/.ssh/known_hosts
---> Using cache
---> 1dea639e8240
Step 6/30 : RUN ssh-keyscan -t rsa 172.168.85.74 >> /root/.ssh/known_hosts
---> Running in 6d98e25ba480
The command '/bin/sh -c ssh-keyscan -t rsa 172.168.85.74 >> /root/.ssh/known_hosts' returned a non-zero code: 1
Cleaning up file based variables
00:00
ERROR: Job failed: exit status 1
Комментарии:
1. В чем было исправление?
Ответ №1:
Используется ssh-keyscan -t rsa 172.168.85.74
для сканирования открытого ключа 172.168.85.74
. В обычном случае она должна возвращать что-то вроде:
172.168.85.74 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC9doCmMIs...
Из вашего журнала вы ничего не вернули, это означает, что контейнер сборки, который вы использовали для сборки образа, не смог получить ключ или не может получить доступ к 172.168.85.74
. Затем команда exit with 1
, которая приводит к сбою сборки. Вы должны убедиться, что машина сборки может выполнить пинг 172.168.85.74
.
Ответ №2:
ssh-keyscan
Входит в комплект поставки openssh-client-common
apk add openssh openssh-client-common