채널톡 아이콘

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

작성자 없음

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

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

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

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

해결된 질문

작성

·

357

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

part-spt님의 프로필 이미지

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

이 질문 해결책 나왔나요?

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이 생성되지 않았거나 이상한 경로에 생성이 됐을 수 있을 것 같아 보입니다.

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

part-spt님의 프로필 이미지

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

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


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

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

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

part-spt님의 프로필 이미지

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

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

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

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

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

 

그럼 Dockerfile 경로가

.github/workflows 가 아니라

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

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

맞습니다!

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

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

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

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

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

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

image.png

 

image.png

위와 같이 나와야 합니다.

part-spt님의 프로필 이미지

image.png

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

 

제 테스트 결과로는

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

 

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

part-spt님의 프로필 이미지

아.. 강의영상 다시 보니 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파일과 도커 파일 내용도 공유해주시면 감사하겠습니다.

part-spt님의 프로필 이미지

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