docker部署 django+gunciorn部署 打包

1 使用gunicorn,无法加载static:

在urls.py,加上:

from django.contrib.staticfiles.urls import staticfiles_urlpatterns

末尾加上:
urlpatterns += staticfiles_urlpatterns()
from django.contrib import admin
from django.urls import path,include
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
app_name='car_app'


urlpatterns = [
    path('admin/', admin.site.urls),
    path(r'',include('car_app.urls',namespace='car_app')),
    # url(r'users/',include('users.urls',namespace='users')),
    # url(r'login/', views.LoginView.as_view()),
    # url(r'logins/', views.LoginView.as_view()),
    # url(r'get_trail_api/', views.get_trail_View.as_view()),
    # url(r'all_on_line/', views.AllOnLine.as_view()), 
    # url(r'time_now/', views.TimeNowView.as_view()),
    # url(r'websocket_test/',views.websocket_test),
    
]
urlpatterns += staticfiles_urlpatterns()

 

加载视频要参考这个:

# settings.py

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR,"static")

MEDIA_URL = "/media/"
MEDIA_ROOT = os.path.join(BASE_DIR, "media")


# urls.py
urlpatterns = [
      ...
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
 

 

docker部分:

run_gunicorn.py: 

与manage.py同级

主要是这个 'car_proj.settings',是找到项目的settings.py,  car_proj是文件夹

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'car_proj.settings')
# app.py

import os
import sys
from gevent import monkey
monkey.patch_all()

from gunicorn.app.base import BaseApplication
from django.core.wsgi import get_wsgi_application

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'car_proj.settings')
application = get_wsgi_application()

class StandaloneApplication(BaseApplication):
    def __init__(self, application, options=None):
        self.options = options or {}
        self.application = application
        super().__init__()

    def load_config(self):
        config = {key: value for key, value in self.options.items()
                  if key in self.cfg.settings and value is not None}
        for key, value in config.items():
            self.cfg.set(key.lower(), value)

    def load(self):
        return self.application

if __name__ == '__main__':
    options = {
        'bind': '0.0.0.0:8000',
        'workers': 4,
        'worker_class': 'gevent'
        # 'static_root': '/static/' 
    }
    StandaloneApplication(application, options).run()

 

  

 

 

 

1 打开网页,不要用https,要用http! http://129.226.209.207:8000/

 

2 允许 0.0.0.0:8000  

ALLOWED_HOSTS = ['*']
 
3 py文件的import ,要新建一个文件夹 如tool,与manage.py同级 再去导入
 
 
posted @ 2022-10-27 10:40  Kevin0is0me  阅读(4)  评论(0编辑  收藏  举报