【发布时间】:2023-03-05 08:34:02
【问题描述】:
我正在为我们设置一个带有Docker、nginx 和gunicorn 的Django 2.0 应用程序。
它正在运行服务器,但静态文件不起作用。
这是settings.py的内容
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static_my_project')
]
STATIC_ROOT = os.path.join(BASE_DIR, 'static_cdn', 'static_root')
在开发过程中,我将静态文件放在 static_my_project 中,运行时 collectstatic 复制到 static_cdn/static_root
目录结构是这样的
app
|- myapp
|- settings.py
|- static_my_project
|- static_cdn
|- static_root
|- config
|- nginx
|- nginx.conf
|- manage.py
|- Docker
|- docker-compose.yml
正在运行
docker-compose up --build
在运行collectstatic 时,它会给出将复制静态文件的路径
koober-dev | --: 运行 collectstatic
库伯开发 |
库伯开发 |您已请求在目的地收集静态文件
我的应用开发 |设置中指定的位置:
我的应用开发 |
我的应用开发 | /app/static_cdn/static_root
我的应用开发 |
我的应用开发 |这将覆盖现有文件!
我的应用开发 |您确定要这样做吗?
我的应用开发 |
我的应用开发 |输入“yes”继续,或输入“no”取消:
我的应用开发 | 0 个静态文件复制到“/app/static_cdn/static_root”,210 个未修改。
config/nginx/nginx.conf 文件包含以下设置
upstream web {
ip_hash;
server web:9010;
}
server {
location /static {
autoindex on;
alias /static/;
}
location / {
proxy_pass http://web;
}
listen 10080;
server_name localhost;
}
docker-compose.yml
version: '3'
services:
nginx:
image: nginx:latest
container_name: "koober-nginx"
ports:
- "10080:80"
- "10443:43"
volumes:
- .:/app
- ./config/nginx:/etc/nginx/conf.d
- ./static_cdn/static_root/:/static
depends_on:
- web
web:
build: .
container_name: "koober-dev"
command: ./start.sh
volumes:
- .:/app
- ./static_cdn/static_root/:/app/static_cdn/static_root
ports:
- "9010:9010"
depends_on:
- db
db:
image: postgres
container_name: "koober-postgres-db"
Dockerfile
FROM ubuntu:18.04
# -- Install Pipenv:
FROM python:3
ENV PYTHONUNBUFFERED 1
ENV LC_ALL C.UTF-8
ENV LANG C.UTF-8
# -- Install Application into container:
RUN set -ex && mkdir /app
WORKDIR /app
ADD requirements.txt /app/
RUN pip install -r requirements.txt
# -- Adding dependencies:
ADD . /app/
但它没有加载静态文件。
【问题讨论】:
-
我认为你颠倒了你的 nginx 配置中的东西。该位置应该是浏览器期望找到的地方,而别名应该是实际的文件系统位置。
-
即使在反转它时也不起作用
-
你试过了吗:
location /app/static_cdn/static_root { autoindex on; alias /app/static_cdn/static_root; } -
也试过了。顺便说一句,它在控制台
myapp-dev | Not Found: /static/theme/css/custom.css -
你能澄清一下这句话是什么意思吗? “在开发过程中,我将静态文件放在 static_my_project 中,它在运行 collectstatic 时将副本复制到 static_cdn/static_root”