将Django Python应用程序放入Docker容器后获取404错误消息

我想获取一些模板信息显示在从Docker container提供的网页上。 它使用uWSGI 。 该模板的名称是base.html

有一些“装饰”与位于static directorybase.html文件相关联。 更具体地说,它驻留在static/wforms/assets目录中。 以下是assets目录在模板中的使用方式。

 <link href="{% static 'wforms/assets/global/plugins/font-awesome/css/font-awesome.min.css' %}" rel="stylesheet" type="text/css" /> <link href="{% static 'wforms/assets/global/plugins/simple-line-icons/simple-line-icons.min.css' %}" rel="stylesheet" type="text/css" /> <link href="{% static 'wforms/assets/global/plugins/bootstrap/css/bootstrap.min.css' %}" rel="stylesheet" type="text/css" /> 

每当我去到一个使用base.html模板的页面,装饰都没有find,结果网页是一团糟。 一切工作正常在PyCharm。 将所有内容移动到Docker容器中的目录结构时,都会出现问题。 以下是PyCharm中的目录结构。

在这里输入图像说明

我开始像这样的容器:

 docker run -it --rm -p 8888:8888 -v /home/dockcclubdjango/apps/wforms/assets:/code/backendworkproj/static/wforms/assets --name my-running-app my-python-app 

作为参考, / home / dockcclubdjango / apps / wforms / assets确实存在,并且有正确的信息。

然后,我尝试去网页主页。 页面显示,但所有的“装饰”不存在。 所以,页面看起来有些混乱。 喜欢这个:

在这里输入图像说明

我看看页面的源代码,看下面的内容。

 <link href="/static/wforms/assets/global/plugins/bootstrap-daterangepicker/daterangepicker.min.css" rel="stylesheet" type="text/css" /> <<< got 404 error in log file <link href="/static/wforms/assets/global/plugins/morris/morris.css" rel="stylesheet" type="text/css" /> <<< got 404 error in log file <link href="/static/wforms/assets/global/plugins/fullcalendar/fullcalendar.min.css" rel="stylesheet" type="text/css" /> <<< got 404 error in log file 

我注意到任何与assets目录相关的项目都找不到。 列出的每个项目都会在日志中出现404 Error

所以,我尝试了下面的启动Docker Container不同(如下所示),但没有奏效

 docker run -it --rm -p 8888:8888 -v /home/dockcclubdjango/apps/wforms/assets:/static/wforms/assets --name my-running-app my-python-app 

我开始看着settings.py文件,但不知道什么是错的。

settings.py文件(减less使它更简单 – 专注于STATIC dirs

 import os BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) TEMPLATE_DIR = os.path.join(BASE_DIR, 'templates') STATIC_DIR = os.path.join(BASE_DIR, 'static') MEDIA_DIR = os.path.join(BASE_DIR, 'media') DEBUG = True ROOT_URLCONF = 'backendworkproj.urls' WSGI_APPLICATION = 'backendworkproj.wsgi.application' SESSION_COOKIE_AGE = 10*60 STATIC_URL = '/static/' STATIC_ROOT = os.path.join(BASE_DIR, "static") STATICFILES_DIRS = [ os.path.join(BASE_DIR, "static"), ] STATIC_ROOT = "/var/www/cclub.com/static/" MEDIA_ROOT = MEDIA_DIR 

我看到这个线程的Docker Django 404为web静态文件,但罚款为pipe理静态文件

并提出了修改build议,但事情仍然没有奏效(页面上的“装饰品”不断出现404错误,不知道在哪里看下一个,我在这里错过了什么?

TIA

更新

@PekosoG – 当我使用下面的build议时,运行docker构build-t my-python-app时,我得到以下内容

  ---> Running in fde638af597f Traceback (most recent call last): File "/code/backendworkproj/manage.py", line 22, in <module> execute_from_command_line(sys.argv) File "/usr/local/lib/python3.6/site-packages/django/core/management/__init__.py", line 364, in execute_from_command_line utility.execute() File "/usr/local/lib/python3.6/site-packages/django/core/management/__init__.py", line 356, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "/usr/local/lib/python3.6/site-packages/django/core/management/base.py", line 283, in run_from_argv self.execute(*args, **cmd_options) File "/usr/local/lib/python3.6/site-packages/django/core/management/base.py", line 330, in execute output = self.handle(*args, **options) File "/usr/local/lib/python3.6/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 199, in handle collected = self.collect() File "/usr/local/lib/python3.6/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 114, in collect for finder in get_finders(): File "/usr/local/lib/python3.6/site-packages/django/contrib/staticfiles/finders.py", line 264, in get_finders yield get_finder(finder_path) File "/usr/local/lib/python3.6/site-packages/django/contrib/staticfiles/finders.py", line 277, in get_finder return Finder() File "/usr/local/lib/python3.6/site-packages/django/contrib/staticfiles/finders.py", line 66, in __init__ "The STATICFILES_DIRS setting should " django.core.exceptions.ImproperlyConfigured: The STATICFILES_DIRS setting should not contain the STATIC_ROOT setting 

更新

恢复到旧的设置(因为他上面的解决scheme没有解决问题)

我有一个类似的问题,我解决这个问题:

设置文件

 STATIC_URL = '/static/' STATIC_FOLDER = 'static' STATICFILES_DIRS = [ os.path.join(BASE_DIR,STATIC_FOLDER), ] STATIC_ROOT = os.path.join(BASE_DIR, "static/") 

还当我运行manage.py命令来初始化我加了这个

 python manage.py collectstatic -link --noinput 

好吧,那算了。 我发现这是为我解决了这个问题。 不知道它是否是最好的select – 但是 – 它工作…

http://uwsgi-docs.readthedocs.io/en/latest/StaticFiles.html