Невозможно применить статический файл в django / docker
введите описание изображения здесь
что мне делать дальше? Дайте мне совет...
это репозиторий github
https://github.com/OZ-Coding-School/oz_02_collabo-006-BE/tree/Feature-docker
я хочу применить css и решить ошибку cors
nginx.conf
server {
listen 80;
server_name 223.130.133.22;
location / {
proxy_pass http://dg01:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# 정적 파일 설정
location /static/ {
alias /src/static; # Docker 컨테이너 내 Django STATIC_ROOT 경로
expires 30d; # 브라우저 캐싱 최대화
}
}
dockerfile
# Python 3.12 베이스 이미지를 사용합니다.
FROM python:3.12
# 환경 변수 설정으로 Python 출력을 stdout으로 보내도록 설정합니다.
ENV PYTHONUNBUFFERED=1
RUN mkdir -p /path/to/django/logs/
RUN mkdir -p /var/log/nginx
# 필요한 시스템 패키지 설치
# libpq-dev: PostgreSQL 데이터베이스 연동을 위한 라이브러리
RUN apt-get update \
&& apt-get install -y --no-install-recommends libpq-dev \
&& rm -rf /var/lib/apt/lists/*
# pip를 최신 버전으로 업그레이드하고 poetry를 설치합니다.
RUN pip install --upgrade pip \
&& pip install poetry
# /app 디렉터리를 작업 디렉터리로 설정합니다.
WORKDIR /src
# 프로젝트의 Python 종속성 관리 파일을 작업 디렉터리로 복사합니다.
COPY pyproject.toml poetry.lock* /src/
# poetry를 사용하여 의존성을 설치합니다. 가상 환경은 생성하지 않습니다.
RUN poetry config virtualenvs.create false \
&& poetry install --no-dev --no-interaction --no-ansi
# 프로젝트의 나머지 파일을 작업 디렉터리로 복사합니다.
COPY . /src
# entrypoint.sh 스크립트에 실행 권한을 부여합니다.
RUN chmod +x /src/entrypoint.sh
# 컨테이너가 시작될 때 실행할 명령어를 설정합니다.
ENTRYPOINT ["/src/entrypoint.sh"]
# gunicorn을 사용하여 Django 앱을 호스트합니다. 이때 포트 8000을 사용합니다.
CMD ["gunicorn", "config.wsgi:application", "--bind", "unix:/tmp/gunicorn.sock"]
docker-compose.yml
version: "3"
services:
web:
build: .
container_name: dg01
command: >
bash -c "python manage.py collectstatic --no-input &&
python manage.py makemigrations &&
python manage.py migrate &&
gunicorn config.wsgi:application --bind 0.0.0.0:8000"
volumes:
- ./src:/app
- static_volume:/static
- media_volume:/media
- static-volume:/static
depends_on:
- db
ports:
- "8000:8000"
nginx:
image: nginx:1.17.10
container_name: ng01
ports:
- 80:80
- 443:443
volumes:
- ./nginx.conf:/etc/nginx/conf.d/default.conf
- ./static:/static
- static-volume:/static
depends_on:
- web
db:
image: postgres:12.2
container_name: ps01
ports:
- "5432:5432"
environment:
POSTGRES_DB: db
POSTGRES_USER: admin
POSTGRES_PASSWORD: admin
volumes:
- postgres_data:/var/lib/postgresql/data
volumes:
postgres_data:
static_volume:
media_volume:
static-volume:
entrypoint.sh
#!/bin/bash
set -e
python manage.py makemigrations
# 데이터베이스 마이그레이션 실행
python manage.py migrate
# 정적 파일 수집
python manage.py collectstatic --no-input --settings=config.settings
# python manage.py create_my_superuser
# 커맨드 라인에서 전달된 명령 실행 (CMD에서 정의된 명령)
exec "$@"