Dev./Docker

[Cloud] 배포 - Docker : 장고 기본 css 파일 매핑

Ivan'show 2023. 8. 12.
728x90
반응형

현재 nginx 로 들어오는 요청을 장고 서버포트로 보내주는데 스태틱 파일은 다른데로 보내주게 설정한다.

server {
	listen 80;
	# server_name http 223.130.133.96;
	server_name localhost;

	location / {
		# 아래의 코드로는 nginx가 실행된 컨테이너의 주소로 보내기 때문에 Bad request 가 뜬다.
		# proxy_pass <http://127.0.0.1:8000>;

		# 그래서 lion-app 즉 장고가 떠있는 컨테이너의 8000포트로 프록시 패스로 넣어주어야 한다.
		proxy_pass <http://lion-app:8000>;
		proxy_set_header Host $host;
		proxy_set_header X-Real-IP $remote_addr;
	}

	location /static/ {
		alias /var/www/html/static/;
	}
}

여전히 css 가 적용되지 않은 채로보여지지만 콘솔에 로그로 에러가 나는 현상은 사라졌다. 왜냐하면 요청 자체가 lion-app-dc 즉, django 쪽으로 오지 않았기 때문이다.

lion-app-dc    | [2023-08-04 00:18:49 +0000] [13] [INFO] Booting worker with pid: 13
lion-app-dc    | [2023-08-04 00:18:49 +0000] [14] [INFO] Booting worker with pid: 14
lion-app-dc    | [2023-08-04 00:18:49 +0000] [15] [INFO] Booting worker with pid: 15

이 뜻은 요청을 장고 쪽으로 보내지 않았고 nginx 쪽으로 보냈는데 우리가 collect 를 실행한 쪽은 장고 쪽이기 때문에 장고 쪽은 해당 admin 파일이 있지만 nginx 쪽은 없어서 로그도 못보고 가져오지도 못하는 상황이 되었다.

docker exec lion-app-dc ls -l /var/www/html/static

lion_app % docker exec lion-app-dc ls -l /var/www/html/static
total 4
drwxr-xr-x    5 root     root          4096 Aug  3 06:55 admin

해당 파일을 공유하기 위해 볼륨으로 맵핑을 해보자

로컬에서 매핑할 볼륨을 생성하고 docker-compose 파일에서 각 서비스 쪽에 볼륨을 지정하는 명렁어를 추가하여 작성한다.

docker volume create static
# docker-compose 파일의 버전을 명시
version: "3"

services: # 서비스들의 시작
  # 앱 설정
  lion-app:
    container_name: lion-app-dc
    build:
      context: lion_app
      dockerfile: Dockerfile # 사용할 도커 파일의 이름
    image: lion-app:0.5
    ports:
      - "8000:8000" # 앞쪽이 호스트 시스템의 포트 : 뒤쬑이 컨테이너의 포트
    volumes: # 추가
      - static:/var/www/html/static

  nginx:
    container_name: lion-nginx-dc
    build:
      context: .
      dockerfile: Dockerfile.nginx_ubt
    image: lion-nginx
    ports:
      - "8888:80"
    volumes: 
      - static:/var/www/html/static

volumes: # 정의해서 가져다 쓸 수 있게
  static:

 

 

 

 

 

728x90
반응형

댓글