Profile picture

[Github-Actions] 환경변수 분리

JaehyoJJAng2023년 04월 19일

개요

Docker hub에서 운영하던 도커 이미지를 Github으로 배포하기 위함.

Github Actions를 사용하여 자동으로 컨테이너 이미지를 릴리스해보는 연습을 해보자

요구사항

  1. Hello World를 출력하는 노드 서버를 도커 이미지로 빌드
  2. 빌드된 이미지를 나의 Docker hub에 업로드
  3. 도커 이미지를 빌드하는 워크플로우 작성

Dockerfile 배포하기

Dockerfile 작성

FROM node:14

WORKDIR /app

COPY ./package.json .

RUN npm install

COPY . .

ARG PORT=4000

EXPOSE ${PORT}

WORKDIR server/

CMD ["node","server-express.js"]

이미지 빌드

$ docker build --tag YOUR-HUB/node-server:latest -f Dockerfile .

이미지 목록 출력

$ docker images | grep "^YOUR-HUB/node-server"

YOUR-HUB/node-server        latest    bf7148e0192c   About an hour ago   863MB

Docker hub repository 생성

image


Docker hub에 이미지 배포

$ docker push YOUR-HUB/node-server:latest

latest: digest: sha256:1137ec3dcad57308cf6ad6560b168ebf3a274efeb540c4ddab5f5894bc07da24 size: 3253

환경변수 설정하기

민감한 정보를 YAML 파일에 그대로 입력해 commit 기록에 남겨두는 것은 치명적 보안 위험을 초래할 수 있으므로 깃허브에서 제공하는 환경 변수를 활용하여 사용하도록 하자 image

워크플로우 작성하기

build.yml

name: build docker image

on:
# 릴리즈는 배포 가능한 소프트웨어 반복으로,패키지 하여 더 많은 사용자가 다운로드, 사용 가능
  release: # 릴리즈 작업 발생 시 해당 워크플로우 실행
    types: 
      - published

jobs:
  build-image:
    runs-on: ubuntu-latest
    steps:
      - name: "1. github runner에 레포지토리 체크아웃"
        uses: actions/checkout@v2
      - name: "2. Docker hub Login"
        uses: docker/login-action@f054a8b539a109f9f41c372932f1ae047eff08c9
        with:
          # 레파지토리 setting에서 secret 설정
          username: ${{ secrets.DOCKER_USERNAME }}
          password: ${{ secrets.DOCKER_PASSWORD }}
      - name: "3. Create metadata"
        id: meta
        uses: docker/metadata-action@98669ae865ea3cffbcbaa878cf57c20bbf1c6c38
        with:
          images: YOUR-HUB/node-server
      - name: "4. docker image build & push"
        uses: docker/build-push-action@ad44023a93711e3deb337508980b4b5e9bcdc5dc
        with:
          context: node-server/
          push: true
          tags: ${{ steps.meta.outputs.tags }}
          labels: ${{ steps.meta.outputs.labels }}

새로운 릴리스 발행

repository 오른쪽 사이드바의 Release 클릭 후 Create a new release 클릭하여 새로운 릴리스를 발행해보자. image


나는 현재 이미 발행된 릴리스가 있으므로 수정한 후 push 해보겠다. image image

Actions 빌드 결과 확인

image

Docker hub 배포 확인

내 Docker hub repository에 node-server 이미지가 정상적으로 배포되었는지 확인해보자 ... image


Loading script...