gpt4 book ai didi

django - Docker中的Django微服务

转载 作者:行者123 更新时间:2023-12-02 18:53:10 26 4
gpt4 key购买 nike

我有以下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应用程序,以便创建微服务环境。

例如,上面的现有Web应用程序将是处理用户注册/登录等的API。我想在组合中添加另一个 Django API,该API可以执行其他操作并且还使用其自己的数据库。

如果理论上将其用于生产环境,则可以通过以 www.demosite.com/api/users开头的url使用第一个API,可以通过以 www.demosite.com/api/widgets开头的url使用第二个API。

我不确定如何从 DockerNginx Angular 实现这一目标。

另外,如果我到目前为止所做的任何事情都完全错误,请纠正我,因为我是新来的。

最佳答案

您可以继续做您现在正在做的事情。将第二个后端容器添加到docker-compose.yml文件,并将另一个location块添加到路由到指定服务的Nginx配置。对于您描述的布局,它可能看起来像

location /api/users {
proxy_pass http://web/;
}
location /api/widgets {
proxy_pass http://widgets/;
}

当您开始说“生产”一词时,通常不会将代码与Docker镜像分开分发。我将尝试删除 volumes:指令,该指令将本地工作树复制到镜像中已安装的内容上,然后将 command:移至Dockerfile中的 CMD中。相反,您可能希望将PostgreSQL和Redis数据库的位置作为环境变量传递,即使它们“通常”在相同的Docker Compose设置中,以防您想要在其他地方运行它们(在定期备份的专用或托管服务)。

关于django - Docker中的Django微服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51855075/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com