django - Docker-Compose + Django + PostgreSQL + uwsgi + Nginx 找不到 404
问题描述
我最近做了一些练习服务。我使用了 Docker-Compose、Django、PostgreSQL、uwsgi、Nginx。我尝试在我的本地机器上运行。这是我在服务器上访问网站时的样子。
这是 Django 'django_project' 根目录中关于我的 settings.py 文件的静态部分。
# STATIC FILE CONFIGURATION
STATIC_DIR = SRC_DIR.path('static')
STATIC_ROOT = str(SRC_DIR('staticfiles'))
STATIC_URL = '/static/'
STATICFILES_DIRS = [str(SRC_DIR('static'))]
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
)
这是我的 Docker-compose 文件
version: '2'
services:
nginx:
restart: always
build: ./nginx
ports:
- "80:80"
volumes_from:
- refrigerator
links:
- refrigerator:refrigerator
depends_on:
- refrigerator
refrigeratordb:
image: "postgres:9.6.1"
container_name: refrigeratordb
expose:
- "5432"
environment:
POSTGRES_PASSWORD: "something"
POSTGRES_USER: "something"
POSTGRES_DB: "something"
refrigerator:
build: .
container_name: refrigeratormanager
depends_on:
- refrigeratordb
links:
- refrigeratordb
volumes:
- .:/var/www/refrigerator
- /usr/src/app/static
command: uwsgi --ini ./refrigerator_manager_uwsgi.ini
stdin_open: true
tty: true
这是我的 Django Dockerfile
FROM centos/python-36-centos7:latest
USER root
ADD . /var/www/refrigerator/
WORKDIR /var/www/refrigerator
RUN pip install --upgrade pip
RUN pip install -r requirements.txt
EXPOSE 8000
这是我的 Nginx Dockerfile
FROM nginx:alpine
RUN rm /etc/nginx/conf.d/default.conf
COPY ./sites-enabled/nginx.conf /etc/nginx/conf.d/default.conf
这是我的 nginx.conf
server {
listen 80;
server_name sodwkdrhdjemals.com www.sodwkdrhdjemals.com;
charset utf-8;
location /static {
alias /static;
}
location / {
include uwsgi_params; # the uwsgi_params file you installed
uwsgi_pass refrigerator:8000;
}
location = /favicon.ico {
return 404;
log_not_found off;
access_log off;
}
}
这是我的 uwsgi.ini
[uwsgi]
chdir = /var/www/refrigerator/
module = refrigerator_manager.wsgi
socket =:8000
chmod-socket = 666
vacuum = true
master = true
这是我的 urls.py
urlpatterns = [
url(settings.ADMIN_URL, admin.site.urls),
url(r'^rest-swagger/', schema_view),
url(r'^vegetables/?$', VegetablesListCreateAPIView.as_view(),
name='query_for_vegetables_list'),
url(r'^vegetables/(?P<vegetable_id>[0-9]+)/?$',
VegetableRetrieveUpdateDeleteView.as_view(),
name='retrieve_update_delete_vegetable_item'),
url(r'^forks/?$', ForksListCreateAPIView.as_view(),
name='query_for_forks_list'),
url(r'^forks/(?P<fork_id>[0-9]+)/?$',
ForkRetrieveUpdateDeleteView.as_view(),
name='retrieve_update_delete_fork_item'),
url(r'^.*', api_404, name='api_404'),
]
我认为 nginx 容器和 Django 容器之间没有连接静态文件。几天来,我尝试通过参考 google 和 StackOverflow 的类似示例来修复该错误,但效果不佳,我需要帮助。帮助!
解决方案
推荐阅读
- python - 如何删除包含您的代码 python 的文件夹
- python - 从列表中的用户分配值
- tensorflow - 将渲染图像从 OpenGL 直接解析到 tensorflow 进行训练/分析
- r - 作为 R 中列循环的一部分,在绘图/进行分析时遇到问题
- flutter - 颤振 | 未为签署配置版本设置密钥库文件
- webpack - `-r dotenv/config` 有什么作用?
- c - 使用 c 应用程序清除 COM 设备中的 STALL 条件
- python-3.x - webbrowser.get('safari').open(url) 如果未打开 safari,则首先在默认浏览器中打开 URL?
- javascript - 当浏览器窗口最小化时,GWT scheduleFixedDelay 方法不起作用
- javascript - 单击按钮时删除/隐藏多个 div