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

텐엑스·2023년 10월 4일
0

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

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

  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개의 댓글

관련 채용 정보