inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

풀스택을 위한 도커와 최신 서버 기술(리눅스, nginx, AWS, HTTPS, 배포까지) [풀스택 Part3]

flask 백엔드 서버와 gunicorn 설정하기1

Flask 사용 시 static 파일에 접근 불가능

452

우태경

작성한 질문수 1

0

[Section14] Docker를 활용하여 Flask기반의 web을 배포하려고 합니다.

파일은 아래와 같이 구성되어 있습니다.

수업내용에서 배운대로 하면 templates는 로드에 성공하는데 static에 있는 이미지들은 업로드에 실패했다고 뜹니다.

로컬에서는 제대로 작동하는 파일을 그대로 옮겨서 사용했는데 무엇이 문제인지를 모르겠습니다.

docker-compose logs를 확인하면

proxyserver | 2024/02/06 01:39:32 [error] 30#30: *8 open() "/etc/nginx/html/static/images/html.png" failed (2: No such file or directory), client: 203.237.124.159, server: , request: "GET /static/images/html.png HTTP/1.1", host: "52.79.173.37", referrer: "http://52.79.173.37/util/search"

이런식으로 이미지 파일 경로가 없다고 뜨는데, Dockerfile에서 WORKDIR로 설정해놓은 곳에 파일 전체를 그대로 COPY 했는데, templates안에 있는 index.html은 정상작동하고, static에 있는 이미지들은 안 불러지는 걸까요?

네트워크 linux docker

답변 1

0

잔재미코딩 DaveLee

안녕하세요. 답변 도우미입니다.

문제의 원인은 Nginx가 정적 파일(static images)을 제공하기 위한 경로 설정에 오류가 있는 것으로 보입니다. docker-compose.yml 파일과 Dockerfile, 그리고 nginx.conf 설정을 모두 정확히 확인하지 않고는 확실한 해결책을 제공하기 어렵지만, 일반적으로 발생할 수 있는 몇 가지 문제와 해결 방법을 안내드리겠습니다.

1. Nginx 정적 파일 경로 설정 오류: Nginx 설정에서 정적 파일을 제공할 위치가 올바르게 지정되지 않았을 수 있습니다. 로그 메시지에서 Nginx가 /etc/nginx/html/static/images/html.png 경로에서 파일을 찾으려고 시도하는 것으로 보이는데, 이는 일반적으로 기대하는 경로가 아닙니다.

2. 정적 파일 볼륨 마운트 문제: Docker-compose 설정에서 Flask 애플리케이션의 static 디렉터리가 Nginx 컨테이너 내의 올바른 위치에 마운트되지 않았을 수 있습니다. Nginx는 정적 파일을 직접 제공하기 위해 이러한 파일에 접근할 수 있어야 합니다.

3. Dockerfile COPY 명령문: Dockerfile에서 COPY 명령을 사용하여 애플리케이션 파일을 이미지에 복사할 때, static 디렉터리가 포함되도록 해야 합니다. 하지만 문제는 COPY 명령이 올바르게 실행되더라도, Nginx가 이러한 파일을 올바르게 찾을 수 있도록 설정되어야 한다는 점입니다.

### 해결 방법

1. Nginx 설정 검토: nginx.conf 파일에서 정적 파일을 제공하는 부분의 경로를 검토하세요. 다음과 같이 설정되어 있어야 합니다:

```nginx

location /static/ {

alias /path/to/your/flaskapp/static/;

}

```

여기서 /path/to/your/flaskapp/static/는 Flask 애플리케이션 내의 static 디렉터리의 절대 경로로 변경해야 합니다. Docker 컨테이너 내부에서의 경로여야 합니다.

2. Docker-compose 볼륨 설정 확인: docker-compose.yml 파일에서 Nginx 컨테이너가 Flask 애플리케이션의 static 디렉터리에 접근할 수 있도록 볼륨을 마운트하는 부분을 확인하세요. 예를 들어:

```yaml

services:

nginx:

volumes:

- ./flask_app/static:/path/to/nginx/html/static

```

이 설정은 호스트 시스템의 flask_app/static 디렉터리를 Nginx 컨테이너의 /path/to/nginx/html/static 위치에 마운트합니다. 이 경로는 앞서 Nginx 설정에서 사용한 경로와 일치해야 합니다.

3. 파일 시스템 권한 확인: 컨테이너 내에서 Nginx 프로세스가 정적 파일에 접근할 수 있는지 확인하세요. 파일 시스템 권한이나 소유권 문제로 인해 접근할 수 없는 경우가 있습니다.

위의 점들을 검토해보시면 좋을 것 같습니다.

감사합니다.

25년도 12월 docker compose 설치 방법이 레거시된 상황

0

102

1

학습자료는 구글드라이브에서만 볼 수 있나요?

0

82

1

강의 외 개발자 진로 관련 질문입니다!

0

66

1

왜 전 오류가 뜨나요??

0

98

1

학습자료가 없어요

0

144

1

강의가 재생이 되지 않습니다.

0

99

1

풀스택을 위한 도커와 최신 서버 기술(리눅스, nginx, AWS, HTTPS, 배포까지) [풀스택 Part3]

0

68

1

도커와 최신 서버 기술 수료시 웹 배포

0

152

1

개인키, 공인 인증서 폴더

0

138

1

워드프레스가 어렵네요 ㅠㅠㅠ

0

167

2

도커 활용하기 (주피터 노트북 서버 만들어보기)에서 질문있습니다

0

153

1

안녕하세요 배포 관련 질문이 있습니다.

0

139

1

ec2 인스턴스에서 우분투 버전관련 문의입니다

0

212

1

주피터 노트북 서버 만들어보기_pymysql 설치관련

0

256

1

window 데스크탑에 도커 사용하려고 하는데요~

0

170

1

안녕하세요 aws 사용 안해도 되나요 ?

0

186

1

/usr/local/apache2/htdocs 경로관련

0

224

2

섹션 16, 17 docker-compose up -d 명령 실행 시 다운로드 속도 느려짐

0

225

1

도커 컨테이너와 이미지 조사하기-docker run 실행시 컨테이너 생성 안됨 오류

0

453

1

mysql 접속 port 개방할 때 궁금한 점이 있습니다.

0

161

1

강의 소개에 나오는 강의자료? 들은 어떻게 받을수 있나요?

0

202

1

[인프런-수업자료요청] e북 자료(구글) 권한 요청드립니다 !

0

148

1

AWS VPC 과금 문제(탄력적 IP)

0

388

2

강의 섹션2 이후부터 강의화면 안보이는 이슈있습니다.

0

190

1