728x90
반응형
workflow 내 환경변수 설정 및 docker-compose.prod.yml 수정
- repository 가 sercret 에 있던걸 variables 로 변경
name: CD using Docker Image
on:
push:
branches:
-
main
env: # 자주 사용하는 부분은 묶어서 사용할 수 있다.
IMAGE_TAG: ${{ vars.NCP_CONTAINER_REGISTRY }}/lion-app:latest
jobs:
build_push_to_ncp:
name: push to NCP container registry
runs-on: ubuntu-latest
steps:
# checkout to the branch and get the codes
- name: Checkout code
uses: actions/checkout@v3
# buildx - support amd64, arm64
- name: Set up Docker buildx
uses: docker/setup-buildx-action@v2
# NCP Login
- name: Login to NCR
uses: docker/login-action@v2
with:
# registry: where to login
registry: ${{ vars.NCP_CONTAINER_REGISTRY }}
username: ${{ secrets.NCP_ACCESS_KEY }}
password: ${{ secrets.NCP_SECRET_KEY }}
- name: Build and Export
uses: docker/build-push-action@v4
with:
context: lion_app # location where image will be built
push: true # This indicates push event
tags: ${{ env.IMAGE_TAG }}
pull_from_ncp:
name: Connect to Server via SSH and pull from NCP
needs: build_push_to_ncp
runs-on: ubuntu-latest
steps:
- name: git pull via SSH
uses: appleboy/ssh-action@v1.0.0
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }}
password: ${{ secrets.PASSWORD }}
script: | # while actions is running, please use options !
cd dev_django_app
git pull
echo "${{ secrets.NCP_SECRET_KEY }}" | dockers login ${{ vars.NCP_CONTAINER_REGISTRY }} --username ${{ secrets.NCP_ACCESS_KEY }} --password-stdin
docker pull ${{ env.IMAGE_TAG }}
docker-compose -f docker-compose.prod.yml up --build -d
이제 Deploy 를 github actions 에서 진행하면서 이미지를 새로 만들고 ncp 를 통해서 가져와서 실행하기 때문에 docker-compose.prod.yml 파일에서 이미지를 가져오는 작업을 없애줘야 한다.
lion-app:
# depends_on:
# - db
container_name: lion-app-dc
build:
context: lion_app
dockerfile: Dockerfile # 사용할 도커 파일의 이름
image: likelion-cr-mh.kr.ncr.ntruss.com/lion-app
ports:
- "8000:8000" # 앞쪽이 호스트 시스템의 포트 : 뒤쬑이 컨테이너의 포트
volumes:
- ~/.aws:/root/.aws:ro # read only
# - ./lion_app:/app # docker 이미지를 github actions 에서 가져오게 되는데,
# 위 코드를 실행하면 최신 이미지를 이전 이미지 파일이 덮어 쓰게 되니 삭제해 준다.
- staticfiles:/var/www/html/static
command:
- "/start"
env_file:
- ./.envs/prod/django
- ./.envs/prod/db
- ./.envs/prod/server
environment:
- AWS_SECRET_NAME=like/lion/prod
- docker 컨테이너 독립
k8s 를 사용하게되면 컨테이너를 각각 띄워야 하기 때문에 docker-compose 가 아닌 개별 도커로 컨테이너를 띄워야 한다.
- docker-compose 실행문을 주석처리
- docker build 커맨드로 변경
script: | # while actions is running, please use options !
cd dev_django_app
git pull
echo "${{ secrets.NCP_SECRET_KEY }}" | dockers login ${{ vars.NCP_CONTAINER_REGISTRY }} --username ${{ secrets.NCP_ACCESS_KEY }} --password-stdin
docker pull ${{ env.IMAGE_TAG }}
# docker-compose -f docker-compose.prod.yml up --build -d
docker stop lion-app-dc && docker rm lion-app-dc
docker run -p 8000:8000 -d \\
-v ~/.aws:/root/.aws:ro \\
--env-file .envs/prod/django --env-file .envs/prod/db --env-file .envs/prod/server \\
--name lion-app-dc \\
${{ env.IMAGE_TAG }} \\
/start
728x90
반응형
'Dev. > Github Actions' 카테고리의 다른 글
[Cloud] CD: Github Actions - workflow_run & Dependency (0) | 2023.08.23 |
---|---|
[Cloud] CD: Github Actions - Mutiple workflow (0) | 2023.08.23 |
[Cloud] CD: Github Actions - ssh, git pull (0) | 2023.08.19 |
[Cloud] CD: Github Actions - docker build (0) | 2023.08.18 |
[Cloud] CD: Github Actions - workflow (0) | 2023.08.18 |
댓글