[배포해보기 (10)] collectstatic; static file 받지 못하는 문제의 해결
웹 프로그래밍

[배포해보기 (10)] collectstatic; static file 받지 못하는 문제의 해결

728x90
반응형

settings.py

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
STATICFILES_DIRS = [
    BASE_DIR / "static",
]

 

collectstatic

python manage.py collectstatic

로컬에서 collectstatic 해도 달라질건 없기때문에 로컬은 놔두고 dockerfile에 입력해준다.

 

FROM python:3.9.0

WORKDIR /home/

RUN git clone https://github.com/Aiden-Kwak/oconnect2021_ver4.git

WORKDIR /home/oconnect2021_ver4/

RUN pip install -r requirements.txt

RUN pip install gunicorn

RUN echo [시크릿키] > .env

RUN python manage.py migrate

RUN python manage.py collectstatic

EXPOSE 8000

CMD ["gunicorn", "oconnect.wsgi", "--bind", "0.0.0.0:8000"]

 

1. docker image create

2. docker volume 생성 및 container 적용

A. docker volume의 이해 : 다른 컨테이너간의 데이터를 공유할 수 있는 기능

 

2- types of Volume : Bind volume & Named Volume

 

1) bind volume

Host server(ex. vultr) 안의 파일이나 경로를 도커안에 있는 컨테이너(ex. nginx)의 파일이나 디렉토리를 연동시켜서 같이 사용할 수 있도록 만든다.

2) named volume

named volume은 docker안에서 이름이 달려있는 새로운 volume을 만든다.그리고 이걸 구동중이거나 구동할 컨테이너들이랑 붙여서 동기화할 수 있다. (이 볼륨은 컨테이너 안에선 특정한 디렉토리로 나올 것.)

붙어있던 컨테이너가 사라진다면? 이 볼륨은 사라지지 않는다. 어떤 컨테이너가 사라지더라도 이 볼륨은 그 데이터를 유지시킨다. 

 

B. Volume 생성

 

static volume

 

media volume

C

C. Container 생성

-django_container_gunicorn

> network: nginx-django

> volume

> deploy

 

-nginx

>network: nginx-django

>volume

 

> nginx.conf

worker_processes auto;

events {
}

http {
  server {
    listen 80;

    include mime.types;

    location /static/ {
        alias /data/static/;
    }

    location /media/ {
        alias /data/media/;
    }

    location / {
        proxy_pass http://django_container_gunicorn:8000;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
  }
}

 

>nginx.conf vps에 올리기

 

>deploy

728x90
반응형