728x90
반응형
도커파일에서 실행하던 런 코드를 스크립트 파일로 바꾼다.
스크립트 파일의 경로를 한번에 scripts 로 정리하고
새롭게 start 파일로 작성한다. 경로에 민갑하기 때문에 최상위 경로에 하나 만들어주고 lion_app (manage.py 가 있는) 에 하나 더 만들어서 구분지어 준다.
FROM python:3.11-alpine
LABEL likelion.web.backendauthor="Ivan kim <xormrdlsrks2@gmail.com>"
...
COPY ./scripts/start /start
RUN sed -i 's/\\r$//g' /start
# \\r : 캐리지 리턴
RUN chmod +x /start
# RUN python3 manage.py migrate -> start 스크립트로 대체
RUN if [ -e /var/www/html/static ]; then rm -rf /var/www/html/static; fi
# 정적파일을 긁어다가 root 로 보내줘야함
RUN python3 manage.py collectstatic
# CMD ["gunicorn", "lion_app.wsgi:application", "--config", "lion_app/gunicorn_config.py"] -> start 스크립트로 대체
start 파일 → 알파인 이미지에는 bash 가 없기 때문에 sh 로 작성
#!/bin/sh
python3 manage.py migrate
gunicorn lion_app.wsgi:application --config lion_app/gunicorn_config.py
NCP 에 올려서 동작시켜보자
쿨라우드 서버에서 코드를 클론받아서 동작시키는 방법
서버와 로컬이 다른점은 거의 없다. 우분투 위에서 설치해야하니 필요한 패키지들을 설치하는 스크립트를 작성해서 배포하고 오픈되는 IP 주소로 잘 연결해주면 무리없이 컨테이너를 띄울 수 있다.
우분투 서버를 새로 띄운다고 생각했을 때 필요한 패키지들을 순차적으로 설치하주는 스크립트를 짜보자.
우선 NCP 에서 서버를 생성할 때 서브 슈퍼유저를 생성해주니까 그 부분을 감안한 실행코드를 짠다.
#!/bin/bash
# Required package install
echo "apt-get update execution"
sudo apt-get update
echo "apt-get install curl execution"
sudo apt-get install -y curl
echo "apt-get install docker execution"
sudo apt-get install -y docker.io docker-compose
# git clone
echo "Start to clone"
git clone <https://github.com/IvaninITworld/Dev_django_app.git> dev_django_app
cd dev_django_app
# venv 설치
echo "Start to install venv"
sudo apt-get update
sudo apt install -y python3.8-venv
# venv 구성
echo "Start to make venv"
python3 -m venv venv
# 가상환경 작동
echo "Start to activate venv"
source venv/bin/activate
# pip install
echo "start to install requirements"
pip install -r requirements.txt
# # runserver 기존작업에 제외 -> nginx로 서버를 띄울거니까
# echo "Start to runserver"
# cd lion_app
# python3 manage.py runserver 0.0.0.0:8000
scp deploy.sh {생성한 유저 이름}@{공인 IP 주소}:/home/{생성된 경로}/ # 가져다 놓을 경로!
#
-rwxr-xr-x 1 lion lion 868 Aug 4 19:41 deploy.sh
...
./deploy.sh
초기 배포 설정이 완료되면 docker-compose 로 컨테이너를 띄운다.
docker-compose up --build
...
lion-app-dc | [2023-08-05 12:07:27 +0000] [10] [INFO] Booting worker with pid: 10
lion-app-dc | [2023-08-05 12:07:27 +0000] [11] [INFO] Booting worker with pid: 11
lion-app-dc | [2023-08-05 12:07:27 +0000] [12] [INFO] Booting worker with pid: 12
lion-app-dc | [2023-08-05 12:07:27 +0000] [13] [INFO] Booting worker with pid: 13
브라우저로 확인하면,
Disallowed 의 경우, settings 에서 설정을 변경해주면 되고 nginx 에서 django 로 프록시 연결해주면 nginx 로 들어오는 접근도 넘겨줄 수 있다.
server_name localhost 175.45.195.249;
ALLOWED_HOSTS = [
"localhost",
"127.0.0.1",
"175.45.195.249", # 추가
]
CSRF_TRUSTED_ORIGINS = [
'<http://localhost:8888>',
]
728x90
반응형
'Dev. > Cloud' 카테고리의 다른 글
[Cloud] 배포 - NCP : DB 서버로 DB 연결 (0) | 2023.08.14 |
---|---|
[Cloud] 배포 - NCP : 클라우드 서버에 올리기 (0) | 2023.08.13 |
[Cloud] 배포 - AWS : Amazon ECR (0) | 2023.08.08 |
[Cloud] 배포 - NCP : 자동으로 nginx 까지 (0) | 2023.08.05 |
[Cloud] 배포 - NCP : Nginx 설정파일 (0) | 2023.08.04 |
댓글