我是一个初学者在docker和我想部署我的django项目使用nginx和postgres的vps使用docker所以我创建了一个dockerfile和docker-compose但它是不工作的这意味着postgres是在港口但django和nginx是不工作的我没有任何想法你能帮助我吗
我的停靠文件
FROM python:3.8-slim-buster
WORKDIR /usr/src/app
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
RUN apt-get update && apt-get install -y build-essential libpq-dev
RUN rm -rf /var/lib/apt/lists/*
COPY . .
RUN pip install --upgrade pip && pip install -r requirements.txt
我的 Docker 组成
version: '3.8'
services:
database:
container_name: database
image: postgres
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: postgres
volumes:
- postgres:/var/lib/postgresql/data
restart: always
app:
build:
context: .
container_name: django-app
command: >
sh -c "python3 manage.py migrate &&
gunicorn config.wsgi:application --bind 0.0.0.0:8000"
volumes:
- static:/usr/src/app/static
- media:/usr/src/app/media
depends_on:
- database
environment:
- DEBUG=False
- ALLOWD_HOST=*
- DATABASE-NAME=postgres
- DATABASE-USER=postgres
- DATABASE-PASSWORD=postgres
- DATABASE-HOST=database
- DATABASE-PORT=5432
nginx:
image: nginx
container_name: nginx
ports:
- "80:80"
volumes:
- ./nginx:/etc/nginx/conf.d
- static:/var/www/static
- media:/var/www/media
volumes:
postgres:
static:
media:
1条答案
按热度按时间beq87vna1#
看起来您在Docker设置上有一个良好的开端,但有一些事情可能会导致问题。
首先,在你的docker-compose.yml中,你的nginx服务没有正确连接到django-app服务,nginx服务应该配置为代理请求到端口8000(gunicorn服务的端口)的django-app服务。
第二,您已经指定了nginx服务要使用的卷,但卷Map的路径不正确。卷Map的路径应该指向主机上nginx配置文件所在的实际目录,而不是合成文件中的./nginx目录。
最后,你还需要确保在docker-compose.yml文件中使用了正确的环境变量,这些变量应该与Django项目的www.example.com文件中的设置相匹配settings.py。
下面是一个示例,说明您的docker-compose.yml文件应该如何:
您需要确保nginx服务中的卷Map路径是正确的,并且应用服务中的环境变量与Django项目的www.example.com文件中的设置相匹配settings.py,这将有助于Django和nginx在Docker中运行。