인프런 커뮤니티 질문&답변

작성자 없음

작성자 정보가 삭제된 글입니다.

[2024] 처음 시작하는 도커와 컨테이너

[실습] 도커 배포 환경 구성

깃허브 액션에서 deploy가 실패해요

해결된 질문

작성

·

158

1

1. 무엇을 하고 싶으신가요?

 

2. 언제, 어떤 오류가 발생하시나요?

 

3. 어떤 시도를 해보셨나요?

 동일하게 파일을 넣고 simple-cicd를 넣고 실행시키는데 도커 배포에서 실패합니다.

err: #0 building with "default" instance using docker driver

23err: #1 [internal] load build definition from Dockerfile

24err: #1 transferring dockerfile: 2B done

25err: #1 DONE 0.0s

26err: ERROR: failed to solve: failed to read dockerfile: open Dockerfile: no such file or directory

27err: Error response from daemon: No such container: 843371319

28err: Unable to find image 'cokeholic-kim/docker-cicd-test:latest' locally

29err: docker: Error response from daemon: pull access denied for cokeholic-kim/docker-cicd-test, repository does not exist or may require 'docker login': denied: requested access to the resource is denied.

30err: See 'docker run --help'.

 

위의 배포파일을 서버로 복사하는부분은 잘 실행되었는지 똑같이 터미널에서 ls로 확인했을때 폴더와 파일은 잘 옮겨져있는데 docker배포부분에서 실패하는것같습니다.

4. 작성한 코드를 공유해주세요.

답변 2

1

저도 배포단계에서 동일한 에러가 발생하는데,

이 질문 해결책 나왔나요?

Dockerfile

FROM node:21

WORKDIR /usr/src/app

COPY package.json ./
RUN npm install
COPY ./server.js ./

CMD ["npm","start"]

simple-cicd.yaml

name: simple cicd # 워크플로우 이름

on: # 워크플로우 실행 조건
  push:
    branches: [ "main" ]

  workflow_dispatch: # workflow 수동 실행 가능

jobs:
  simple: # 변경 가능
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v4 # $GITHUB_WORKSPACE 기준으로 체크 아웃

      - name: 배포 파일을 서버로 복사
        uses: appleboy/scp-action@v0.1.7
        with:
          host: ${{ secrets.HOST }}
          username: ${{ secrets.USERNAME }}
          key: ${{ secrets.SSH_PEM_KEY }}
          source: "*,!.github,!.git" # 모든 파일을 복사하되, .github/.git 폴더는 제외
          target: "$HOME/${{ github.repository_id }}"

      - name: 도커 배포
        uses: appleboy/ssh-action@v1.0.3
        with:
          host: ${{ secrets.HOST }}
          username: ${{ secrets.USERNAME }}
          key: ${{ secrets.SSH_PEM_KEY }}
          script: |
            cd $HOME/${{ github.repository_id }}
            docker build -t ${{ github.repository }} .
            docker rm -f ${{ github.repository_id }}
            docker run -d -p 8080:5000 --name ${{ github.repository_id }} ${{ github.repository }}

 

천강민님의 프로필 이미지
천강민
지식공유자

안녕하세요.

두 가지 확인 요청드립니다.

  1. 배포하신 서버에 secrets.USERNAME으로 설정된 유저로 $HOME/ 밑에 숫자로된 디렉토리가 있을까요?

  2. 해당 디렉토리 밑에 Dockerfile이 정상적으로 복사가 됐을까요?

동일 오류라면 Dockerfile이 생성되지 않았거나 이상한 경로에 생성이 됐을 수 있을 것 같아 보입니다.

답변 주시면 가능한한 빨리 확인하고 회신 드리겠습니다!

  1. 배포하신 서버에 secrets.USERNAME으로 설정된 유저로 $HOME/ 밑에 숫자로된 디렉토리가 있을까요?
    >>> 네 숫자로된 폴더 생성되었습니다.

  2. 해당 디렉토리 밑에 Dockerfile이 정상적으로 복사가 됐을까요?
    >>> 배포파일을 서버로 복사 단계는 오류없이 성공했다고 뜨는데,


    해당 폴더에 Dockerfile 이 없네요...

천강민님의 프로필 이미지
천강민
지식공유자

지금 다시 배포해보고 조금 더 자세한 로그 확보 가능한 방안 확인되면 바로 회신 드리겠습니다!

README.md 파일만 올라갔습니다.

현재 강의대로 따라했을때에는

Dockerfile 이 .github/workflows 경로 밑에 들어있는데, 

(*강의대로가 아니고 수강생(제가..) 잘못보고 만들었습니다)

source: !.github 설정으로 인해서 제외된건가요..?

 

그럼 Dockerfile 경로가

.github/workflows 가 아니라

repository 루트 경로에 있어야 하는걸까요?

천강민님의 프로필 이미지
천강민
지식공유자

맞습니다!

.github/workflows에 들어 있는건 이상하네요.

레포지토리 최상단에 있는게 맞습니다.

혹시 워크플로우 트리거 전 커밋하는 화면 공유 가능하실까요?

천강민님의 프로필 이미지
천강민
지식공유자

빠르게 만들어서 테스트 진행해봤습니다.

결과적으로 최상단에 Dockerfile을 배치하면 아래와 같은 스크립트 이용해서 실행할때,

image.png

 

image.png

위와 같이 나와야 합니다.

image.png

서버 구동에 필요한 모든 파일을 root 경로로 이동하고, workflows 에 simple-cicd.yml 파일만 다시 복붙한뒤 테스트 해보니까 정상적으로 배포까지 실행되었네요.

 

제 테스트 결과로는

루트 경로에 있는 파일들만 정상적으로 서버로 복사가 되었습니다.

 

경로 문제인지 왜 되는지는 정확히 모르겠습니다 ㅠㅠ

아.. 강의영상 다시 보니 yml 파일만 .github/workflows 폴더 내부에 있고... 나머지는 전부 루트 경로에 들어가는게 맞군요..

 

제가 경로를 잘못봤네요. (보다 졸았어요;;)

내부에다가 잘못만들어서 안된거네요;;

죄송합니다 ㅠㅠ

천강민님의 프로필 이미지
천강민
지식공유자

https://github.com/appleboy/scp-action/issues/59#issuecomment-964605479

위 이슈가 있긴한데 오래돼서 정확한지 모르겠네요.

제가 직접 테스트해보고 다시 말씀 드리겠습니다!

천강민님의 프로필 이미지
천강민
지식공유자

앗 그렇군요. 혹시 버그가 아직도 있는건가 싶었네요. 다행입니다 ㅎㅎ

0

천강민님의 프로필 이미지
천강민
지식공유자

안녕하세요!

26err: ERROR: failed to solve: failed to read dockerfile: open Dockerfile: no such file or directory

27err: Error response from daemon: No such container: 843371319

28err: Unable to find image 'cokeholic-kim/docker-cicd-test:latest' locally

질문 주신 내용의 위 부분을 봤을 때 simple-cicd 스크립트 파일의 아래 부분이 누락되어 있는게 아닌지 의심되네요.

image.png

정확히 어떤 셋팅을 하셨는지를 모르는 상황이라서 위 내용 올바르게 들어가 있는지 확인 부탁드리겠습니다.

위 내용 외에도 뭔가 스크립트나 도커파일 부분에서 제공해드린 것과 다른 내용이 있는걸로 보입니다. 가능하시다면 활용중이 yaml파일과 도커 파일 내용도 공유해주시면 감사하겠습니다.

답글로 질문하려했던 것을 아래 답변으로 등록했네요. 확인 부탁드립니다.

작성자 없음

작성자 정보가 삭제된 글입니다.

질문하기