Anu*_*TBE 8 django nginx docker
我正在为我们设置一个Django 2.0带有Docker,nginx和的应用程序gunicorn。
它正在运行服务器,但静态文件不起作用。
这是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')
Run Code Online (Sandbox Code Playgroud)
在开发时,我把我的静态文件放在里面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
Run Code Online (Sandbox Code Playgroud)
跑步时
docker-compose up --build
Run Code Online (Sandbox Code Playgroud)
在运行时collectstatic,它给出了静态文件将被复制的路径
koober-dev | --: 运行 collectstatic
koober-dev |
koober-dev | 您已请求在目的地
myapp-dev |收集静态文件 设置中指定的位置:
myapp-dev |
myapp-dev | /app/static_cdn/static_root
myapp-dev |
myapp-dev | 这将覆盖现有文件!
myapp-dev | 你确定要这么做吗?
myapp-dev |
myapp-dev | 输入“是”继续,或输入“否”取消:
myapp-dev | 0 静态文件复制到“/app/static_cdn/static_root”,210 未修改。
在配置/ 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;
}
Run Code Online (Sandbox Code Playgroud)
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"
Run Code Online (Sandbox Code Playgroud)
文件
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/
Run Code Online (Sandbox Code Playgroud)
但它没有加载静态文件。
Pra*_*wal 15
您需要有一个共享卷到STATIC_ROOT目录,以便您的nginx容器可以反向代理到 Web 服务器和由您的 Web 服务器生成的静态文件。
在docker-compose.yml:
services:
nginx:
image: nginx:alpine
volumes:
- ./static_cdn/static_root/:/static
ports:
- 80:80
web:
build: .
volumes:
- ./static_cdn/static_root/:/app/static_cdn/static_root
Run Code Online (Sandbox Code Playgroud)
现在在你的 nginx.conf 添加:
location /static/ {
alias /static/;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12428 次 |
| 最近记录: |