
가상환경 생성 패키지 설치
sudo apt install python3.12-venv
가상환경 생성
python3 -m venv myvenv
가상환경 활성화: 맨 앞에 (가상환경이름) 이 보이는지 확인
source myvenv/bin/activate
이 소스 코드를 실행할 때는 가상환경 안에서 실행을 하던가 아니면 이 가상환경에 설치된 외부 라이브러리를 다시 설치한 후 실행해야 합니다.
Django API Server를 만들기 위한 패키지를 설치
pip install django
pip install djangorestframework
django-admin startproject apiserver
실행
cd apiserver
python manage.py runserver
브라우저에서 확인
http://localhost:8000

settings.py 파일을 수정
#어떤 컴퓨터에서 실행될 것인지를 설정
#*이면 아무 컴퓨터에서나 실행이되고 아이피를 직접 설정하면 그 아이피에서만 실행이 됩니다.
ALLOWED_HOSTS = ['*']
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'apiserver',
'rest_framework'
]
TIME_ZONE = 'Asia/Seoul'

사용자의 요청을 처리할 views.py 파일을 apiserver 디렉토리 내부에 생성하고 작성
from rest_framework.response import Response
from rest_framework.decorators import api_view
from rest_framework import status
@api_view(['GET'])
def index(request):
data = {"result":"success", "data":[{"id":"itstudy", "name":"adam"}]}
return Response(data, status=status.HTTP_200_OK)
urls.py 파일을 수정해서 요청 과 요청 처리 함수를 연결
from django.contrib import admin
from django.urls import path
from .views import index
urlpatterns = [
path('admin/', admin.site.urls),
path('', index)
]
실행 후 브라우저에서 확인 localhost:8000
python manage.py runserver 0.0.0.0:8000

pip freeze > requirements.txt
Dockerfile 작성, 이번 도커 파일은 마지막 CMD 부분을 제외하고 모든 파이썬 파일에 적용 가능
FROM --platform=linux/amd64 python:3.12.7-slim as build
RUN apt-get update && apt-get install -y --no-install-recommends && rm -rf /var/lib/apt//lists/*
WORKDIR /usr/src/app
COPY requirements.txt ./
RUN pip install -r requirements.txt
COPY . .
EXPOSE 80
CMD ["python", "manage.py", "runserver", "0.0.0.0:80"]
docker build -t apiserver .docker run -d -p 80:80 --name apiserver apiserver

3)코드를 git hub에 주기적으로 업로드 - CI
apiserver 디렉토리에서 수행
# git 초기화
git init
# git에 변경 내용을 적용하기 위한 파일 등록
git add .
# 로컬 git에 변경 내용 반영
git commit -m 'cicd'
# 브랜치 변경
git branch -m main
원격 저장소 등록
git remote add origin ‘저장소 URL’
원격 저장소에 업로드
git push origin main
원격 저장소에 push 되었는지 확인

git이 업로드된 디렉토리에 .github/workflows 디렉토리를 생성하고 yml 파일을 생성해서 작성
name: djangocicd
on:
push:
branches: ["main"]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: CheckOut
uses: actions/checkout@v3
- name: Set up Python 3.12.7
uses: actions/setup-python@v4
with:
python-version: '3.12.7'
- name: Upgrade pip
run:
python -m pip install --upgrade pip
- name: Install Dependencies
run:
pip install -r requirements.txt
- name: Login to DockerHub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: build and release to DockerHub
env:
NAME: ${{ secrets.DOCKERHUB_USERNAME }}
REPO: djangocicd
github의 repository 에 2개의 변수 등록

코드를 수정한 경우
git add .
git commit -m ‘메시지’
git push origin main
docker hub에 image push가 되었는지 확인

docker hub에서 image를 pull 받아서 컨테이너로 실행
docker pull yachae1101/djangocicd

docker run -d -p 80:80 --name apiserver yachae1101/djangocicd
