【发布时间】:2019-01-22 02:48:10
【问题描述】:
我有以下docker-compose.yml:
version: '3.6'
services:
db:
image: postgres:10.4
volumes:
- postgres_data:/var/lib/postgresql/data/
cache:
image: redis:4.0.10
volumes:
- redis_data:/data
web:
build: .
image: dockerdjangoexample
command: bash -c "gunicorn demosite.wsgi:application -b 0.0.0.0:8000"
volumes:
- .:/code
depends_on:
- db
- cache
nginx:
image: nginx:1.15.2-alpine
ports:
- "8000:8000"
volumes:
- ./docker-config/nginx:/etc/nginx/conf.d
depends_on:
- web
volumes:
postgres_data:
redis_data:
Dockerfile 是:
FROM python:3.6.5
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
WORKDIR /code
COPY . /code/
RUN pip install --upgrade pip
RUN pip install pipenv
RUN pipenv install --deploy --system --skip-lock --dev
Nginx 配置文件是:
upstream web {
ip_hash;
server web:8000;
}
server {
location / {
proxy_pass http://web/;
}
listen 8000;
server_name localhost;
}
这一切都完美无缺。我现在想弄清楚的是如何在组合中添加第二个Django 应用程序,以便创建微服务环境。
例如,上面的现有网络应用程序将是一个处理用户注册/登录等的 API。我想添加另一个 Django API 到组合中,它可以做其他事情,也可以使用它自己的数据库.
如果理论上将其投入生产环境,那么第一个 API 将通过以 www.demosite.com/api/users 开头的 url 使用,第二个 API 可以通过以 www.demosite.com/api/widgets 开头的 url 使用。
从Docker 和Nginx 的角度来看,我不确定如何实现这一点。
另外,如果到目前为止我做错了什么,请纠正我,因为我是新手。
【问题讨论】:
-
您最终是创建了一个单独的 SSO Django 应用程序来处理身份验证,还是使用了 AWS Cognito 之类的服务?另外,如果您使用单独的 django 项目来处理身份验证,您能否告诉我有关两个项目的 settings.py 中的哪些身份验证后端设置的详细信息?
标签: django docker nginx docker-compose microservices