Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

2-3 [배포] [배포] docker, github workflows 이용한 dev 서버 배포 자동화 #3

Merged
merged 4 commits into from
Nov 15, 2022

Conversation

leesungbin
Copy link
Member

@leesungbin leesungbin commented Nov 14, 2022

개요

자동화 흐름

  1. dev 브랜치 push(또는 pr merge)
  2. deploy_dev.yml 에서 작성된 job들이 실행됨.
  • Naver Container Registry에 도커 이미지 push
    • BE build, push
    • FE build, push
  • ssh로 dev용 서버에 접속, Naver Container Registry로부터 FE, BE 이미지 각각 pull & run

production 용 자동화를 만들려면, 접속할 ssh 서버를 FE/BE 각각 두면 됨.

작업사항

  • Repository 내의 Secret 설정

BE

  • 현재는 nest 프로젝트의 build만 진행
    • 추후 dockerfile의 수정이 필요함 (redis, db 등 연결 필요)

FE

  • react-script로 build 한 내용을 nginx에서 static 하게 제공

리뷰 요청사항

  • Dockerfile 및 deploy_dev.yml에서 jobs의 흐름

이 PR merge 이전에 프론트 쪽 package.json 업데이트 된 내용이 먼저 merge 되어야합니다.

Backend의 경우 추후 dockerfile의 수정이 필요함 (redis, db 등 연결 필요)
@leesungbin leesungbin changed the base branch from main to dev November 14, 2022 08:28
@leesungbin leesungbin changed the title 2-3 [배포] [배포] docker, github workflows 이용한 배포자동화 2-3 [배포] [배포] docker, github workflows 이용한 dev 서버 배포 자동화 Nov 14, 2022
Copy link
Collaborator

@JunYupK JunYupK left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

good

Copy link
Collaborator

@Palwol Palwol left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

수고하셨습니다. 역시 WBD(World Best Developer & Designer)시군요.🧑‍💻

도커에 대해 잘 몰라서 궁금한 점이 많은 점 양해 부탁드립니다. 그리고 front쪽 package.json 업데이트가 선행되어야 한다고 해서 실수할까봐 우선 approve는 안했습니다~!

Comment on lines +18 to +20
registry: ${{ secrets.NCP_CONTAINER_REGISTRY }}
username: ${{ secrets.NCP_ACCESS_KEY }}
password: ${{ secrets.NCP_SECRET_KEY }}
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

dev 브랜치에 push가 이루어지면 NCP 정보들을 .secrets 파일에서 가져와서 사용하는듯 한데, .secrets 파일은 NCP 서버쪽에만 있으면 되는걸까요?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

.secrets 파일은 로컬에서 act를 활용해서 workflow 테스트 할 때만 필요해요.
즉, 로컬 개발환경에서 workflow 테스트할 때만 있으면 되는 파일이고, NCP 서버쪽에는 없어도 됩니다.
깃헙에서 해당 workflow가 실행될 때는 우리 레포지토리의 settings - security - secrets - actions에 있는 secret 값들을 참조합니다!

docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)
docker run -d -p 3001:3001 ${{ secrets.NCP_CONTAINER_REGISTRY }}/prv-backend
docker run -d -p 80:80 ${{ secrets.NCP_CONTAINER_REGISTRY }}/prv-frontend
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

frontend 포트로 80번을 사용하는 이유가 궁금합니다. (제 단순한 이해로는 3000번이면 되지 않나? 라는 생각이 들어서요,,)

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

맞아요,, 3000번 써도 됩니다,,ㅎㅎ 다만, 사용자가 직접 들어가는 주소는 http 기본 포트여야하지않을까 생각했던 내용이었습니다.
개발서버이다보니 49.50.172.204:3000은 client가, 49.50.172.204:3001은 api 서버로 해도 괜찮을 것 같습니다.

push: true
tags: ${{ secrets.NCP_CONTAINER_REGISTRY }}/prv-backend:latest
secrets: |
GIT_AUTH_TOKEN=${{ secrets.GIT_TOKEN }}
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

GIT Auth Token은 성빈님 개인이 발급받은 토큰을 사용하시는걸까요?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

아 맞아요. 이 repository가 public이다보니 사실 GIT_AUTH_TOKEN은 필요없습니다.
private repository에 있는 값을 NCP_CONTAINER_REGISTRY에 push 할 때는 필요한 값 입니다.

window에서 git cz 사용하기 위해서는 .czrc 파일이 존재해야함
서버 내부에 be, fe 별로 envfile이 제공되어야합니다.
@leesungbin leesungbin merged commit c1f6764 into dev Nov 15, 2022
@leesungbin leesungbin deleted the feature/auto-deploy branch November 21, 2022 04:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants