我的docker-compose.yml
# pull official base image
FROM python:3.10-alpine
# set work directory
WORKDIR .
# set environment variables
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
# install dependencies
RUN pip install --upgrade pip
COPY ./requirements.txt .
RUN pip install -r requirements.txt
# copy project
COPY . .
我的Dockerfile
如下:
services:
app:
build:
context: .
ports:
- "8000:8000"
command: >
sh -c "python3 manage.py runserver 0.0.0.0:8000"
redis:
image: redis:alpine
celery:
restart: always
build:
context: .
command: celery -A search worker -l info
depends_on:
- redis
- app
我的项目目录的树形结构如下:
├── Dockerfile
├── Procfile
├── books
│ ├── __init__.py
│ ├── admin.py
│ ├── apps.py
│ ├── migrations
│ │ ├── 0001_initial.py
│ │ ├── __init__.py
│ ├── models.py
│ ├── templates
│ │ └── search.html
│ ├── tests.py
│ ├── urls.py
│ └── views.py
├── docker-compose.yml
├── manage.py
├── requirements.txt
├── search
│ ├── __init__.py
│ ├── asgi.py
│ ├── celery.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
└── templates
├── base.html
├── home.html
└── registration
├── login.html
└── logout.html
我的设置如下:
ALLOWED_HOSTS = ['0.0.0.0', '127.0.0.1', 'localhost']
DISABLE_COLLECTSTATIC = 0
# Application definition
INSTALLED_APPS = [
"django.contrib.admin",
"django.contrib.auth",
"django.contrib.contenttypes",
"django.contrib.sessions",
"django.contrib.messages",
"django.contrib.staticfiles",
"books.apps.BooksConfig",
"debug_toolbar",
"corsheaders",
"django.contrib.postgres",
"django_celery_beat",
]
MIDDLEWARE = [
"django.middleware.security.SecurityMiddleware",
"corsheaders.middleware.CorsMiddleware",
"django.contrib.sessions.middleware.SessionMiddleware",
"django.middleware.common.CommonMiddleware",
"django.middleware.csrf.CsrfViewMiddleware",
"django.contrib.auth.middleware.AuthenticationMiddleware",
"django.contrib.messages.middleware.MessageMiddleware",
"django.middleware.clickjacking.XFrameOptionsMiddleware",
"debug_toolbar.middleware.DebugToolbarMiddleware",
"whitenoise.middleware.WhiteNoiseMiddleware",
]
ROOT_URLCONF = "search.urls"
LOGIN_REDIRECT_URL = "home"
LOGOUT_REDIRECT_URL = "home"
CORS_ORIGIN_ALLOW_ALL = False
CORS_ORIGIN_WHITELIST = (
'http://localhost:8000',
'https://localhost:8000',
'http://0.0.0.0:8000',
'https://0.0.0.0:8000',
'http://127.0.0.1:8000',
'https://127.0.0.1:8000'
)
TEMPLATES = [
{
"BACKEND": "django.template.backends.django.DjangoTemplates",
"DIRS": [BASE_DIR / "templates"],
"APP_DIRS": True,
"OPTIONS": {
"context_processors": [
"django.template.context_processors.debug",
"django.template.context_processors.request",
"django.contrib.auth.context_processors.auth",
"django.contrib.messages.context_processors.messages",
],
},
},
]
STATIC_URL = "/static/"
如果我访问http://0.0.0.0:8000/admin/
,控制台会显示以下内容,并且css不会加载。
The Cross-Origin-Opener-Policy header has been ignored, because the URL's origin was untrustworthy. It was defined either in the final response or a redirect. Please deliver the response using the HTTPS protocol. You can also use the 'localhost' origin instead. See https://www.w3.org/TR/powerful-features/#potentially-trustworthy-origin and https://html.spec.whatwg.org/#the-cross-origin-opener-policy-header.
3条答案
按热度按时间yeotifhr1#
您可能需要将
SECURE_CROSS_ORIGIN_OPENER_POLICY = None
添加到设置文件中。另外,根据whitenoise和corsheaders文档,检查中间件声明的顺序是否正确。例如:
根据他们的文档,
WhiteNoiseMiddleware
看起来不应该在列表的底部。zysjyyx42#
在
settings
文件中:像这样添加以加载
static
。qybjjes13#
我不知道这是否是最好的答案,但这是我尝试了很多东西后得到的。
我使用了https://stackoverflow.com/a/39291292
终于成功了