Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为Nginx和Django组合网络主机和网桥_Django_Docker_Nginx_Docker Compose - Fatal编程技术网

为Nginx和Django组合网络主机和网桥

为Nginx和Django组合网络主机和网桥,django,docker,nginx,docker-compose,Django,Docker,Nginx,Docker Compose,我正在对接一个Django应用程序,同时使用Nginx作为代理。 我的问题是,DB正在dockers所在的同一台机器上运行(非停靠)。 因此,我必须对django应用程序使用network_模式:“host”,以便使用localhost连接到db。 另一方面,如果我这样做,nginx映像将无法再访问Django应用程序,并提供 nginx: [emerg] host not found in upstream 我的docker compose文件如下所示: version: '3.4' se

我正在对接一个Django应用程序,同时使用Nginx作为代理。 我的问题是,DB正在dockers所在的同一台机器上运行(非停靠)。 因此,我必须对django应用程序使用network_模式:“host”,以便使用localhost连接到db。 另一方面,如果我这样做,nginx映像将无法再访问Django应用程序,并提供

nginx: [emerg] host not found in upstream
我的docker compose文件如下所示:

version: '3.4'

services:
  web:
    build: .
    command: sh /start.sh
    networks: 
      - db_network
      - web_network
    volumes:
      - static_volume:/allarmi/src/AllarmiWs/static
    expose:
      - 8001
    environment:
      - DEBUG=0
      - DJANGO_SETTINGS_MODULE=AllarmiWs.settings.deploy

  nginx:
    build: ./nginx
    ports:
      - 8000:80
    depends_on:
      - web
    volumes:
      - static_volume:/allarmi/src/AllarmiWs/static
    networks: 
      - web_network

volumes:
  static_volume:


networks:
  web_network:
    driver: bridge
  db_network:
    driver: host


这是我的nginx.conf文件

upstream allarmi {
    server web:8001;
}

server {

    listen 80;

    location / {
        proxy_pass http://allarmi;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_redirect off;
    }

    location /static/ {
        alias /allarmi/src/AllarmiWs/static/;
    }

}

我该怎么做呢

这不是DB的问题。请显示您的nginx配置。像往常一样,它放在那里的某个地方:
/etc/nginc/conf/default.conf
在另一边,如果我这样做,nginx映像将无法再访问Django应用程序,并提供
-你确定nginx可以连接而不将Django和DB放在同一台主机上吗?
网络模式:主机
是一种黑客行为。您几乎总是希望使用标准的Docker容器间网络,并将数据库的主机名配置为环境变量。数据库位于同一台机器上,因此可以通过localhost访问。当然,只有在网络模式下:主机启用。如果我启用它,nginx将无法访问我的Django应用程序。这不是DB的问题。请显示您的nginx配置。像往常一样,它放在那里的某个地方:
/etc/nginc/conf/default.conf
在另一边,如果我这样做,nginx映像将无法再访问Django应用程序,并提供
-你确定nginx可以连接而不将Django和DB放在同一台主机上吗?
网络模式:主机
是一种黑客行为。您几乎总是希望使用标准的Docker容器间网络,并将数据库的主机名配置为环境变量。数据库位于同一台机器上,因此可以通过localhost访问。当然,只有在网络模式下:主机启用。如果我启用它,nginx将无法访问我的Django应用程序