Github actions +watch tower 개발 서버 자동 배포

텐엑스·2023년 10월 4일

개발 서버 자동배포 세팅하는 방법

개발 서버 자동 배포 세팅을 하기 위해서는 우선

  1. 개발서버 자동 배포를 세팅하기 위해서 watchtower을 세팅합니다.
  2. Github actions를 사용하면서 자동으로 빌드 된 이미지를 docker hub(harbor)에 push 진행합니다.
  3. push 된 이미지를 자동으로 감지해서 자동으로 컨테이너를 업데이트하는 로직을 구축합니다.
* 사용한 이미지 경로

Watchtower

docker run -d \
    --name watchtower \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -e WATCHTOWER_POLL_INTERVAL=300 \
    -e DOCKER_USERNAME=tenxtube \
    -e DOCKER_PASSWORD=72quf6!!22 \
    containrrr/watchtower

1. react ci/cd

  1. 리액트 프로젝트에 대한 레퍼지토리를 만듭니다.

  2. Github actions으로 develop 브랜치에 push가 되었을 때 Github actions에 빌드 해서 docker hub에 올라갈 수 있도록 세팅합니다.
    일단 Github 시크릿에 DOCKER_HUB_USERNAME/DOCKER_HUB_PASSWORD를 등록해서 사용합니다.

  3. 빌드 테스트
    .github\workflows\react_build.yml

name: React Build Workflow

on:
  push:
    branches:
      - develop

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    - name: Check out code
      uses: actions/checkout@v2

    - name: Set up Node.js
      uses: actions/setup-node@v2
      with:
        node-version: '14'  # You can specify your Node.js version here

    - name: Install dependencies
      run: npm install

    - name: Build
      run: npm run build

  1. 빌드 + docker hub에 push 진행
name: React Build and Docker Push Workflow

on:
  push:
    branches:
      - develop

jobs:
  build_and_push:
    runs-on: ubuntu-latest

    steps:
    - name: Check out code
      uses: actions/checkout@v2

    - name: Set up Node.js
      uses: actions/setup-node@v2
      with:
        node-version: '16'  # You can specify your Node.js version here

    - name: Install dependencies
      run: npm install

    - name: Build React Project
      run: npm run build

    - name: Login to Docker Hub
      uses: docker/login-action@v1
      with:
        username: ${{ secrets.DOCKER_HUB_USERNAME }}
        password: ${{ secrets.DOCKER_HUB_PASSWORD }}

    - name: Build and push Docker image
      run: |
        docker build -t tenxtube/react-test:develop .
        docker push tenxtube/react-test:develop
  1. docker file 추가
# React Dockerfile
FROM node:16

WORKDIR /app

COPY package*.json ./

RUN npm install

COPY . .

EXPOSE 3000

CMD ["npm", "start"]

docker run -p 3000:3000 tenxtube:develop -d

  1. 수정 후에 업데이트 했을 때 자동으로 잘 되는지 확인


2. nest ci/cd

nest new nest-test
  1. nest 프로젝트 main push 합니다.
  2. docker file, workflows 설정합니다.
  3. 포트 및 외부 접속 허용합니다.
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  await app.listen(3001, '0.0.0.0');
}
bootstrap();



3. express ci/cd

  1. express 프로젝트 main 기본 push 합니다.
  2. docker file, workflows 작성합니다.

자동 배포 테스트


4. next ci/cd

  1. Next main 브랜치에 기본 push 합니다.
  2. docker file, workflows 작성합니다.

  1. 자동 배포 테스트

profile
엔아이 마케팅 개발팀입니다

0개의 댓글