运行Django项目的Docker NGINX安装程序给出了无效的端口规范错误

运行Django项目的Docker NGINX安装程序给出了无效的端口规范错误,django,nginx,docker,docker-compose,docker-machine,Django,Nginx,Docker,Docker Compose,Docker Machine,我正在为我的django项目设置Docker。我相信一切都准备好了在我的机器上运行docker。目前,docker版本提供以下输出: Client version: 1.6.2 Client API version: 1.18 Go version (client): go1.2.1 Git commit (client): 7c8fca2 OS/Arch (client): linux/amd64 Server version: 17.05.0-ce Server API version: 1

我正在为我的django项目设置Docker。我相信一切都准备好了在我的机器上运行docker。目前,
docker版本
提供以下输出:

Client version: 1.6.2
Client API version: 1.18
Go version (client): go1.2.1
Git commit (client): 7c8fca2
OS/Arch (client): linux/amd64
Server version: 17.05.0-ce
Server API version: 1.29
Go version (server): go1.7.5
Git commit (server): 89658be
OS/Arch (server): linux/amd64
我已将我的
docker compose.yml
文件设置如下:

version: '3'
services:
  nginx:
    restart: always
    image: nginx:latest
    container_name: NGINX
    ports:
      - "8000:8000"
    volumes:
      - ./src:/src
      - ./config/nginx:/etc/nginx/conf.d
      - /static:/static
    depends_on:
      - web
  web:
    restart: always
    build: .
    container_name: DJANGO
    command: bash -c "python manage.py makemigrations && python manage.py migrate && gunicorn loop.wsgi -b 0.0.0.0:8000 --reload"
    depends_on:
      - db
    volumes:
      - ./src:/src
      - /static:/static
    expose:
      - "8000"

  db:
    restart: always
    image: postgres:latest
    container_name: PSQL
docker compose build
成功构建docker图像并显示以下消息:

Successfully built 6b13b02488dc
Successfully tagged loopserver_web:latest
nginx uses an image, skipping
但是,当我尝试运行
docker compose up
时,出现以下错误:

Creating NGINX ... 
Creating NGINX ... error

ERROR: for NGINX  Cannot create container for service nginx: invalid port specification: "None"

ERROR: for nginx  Cannot create container for service nginx: invalid port specification: "None"
ERROR: Encountered errors while bringing up the project.
以及
config/nginx
文件夹中的
server.conf
文件

upstream web {  
  ip_hash;
  server web:8000;
}

# portal
server {  
  location /static/ {    
        autoindex on;    
        alias /static/; 
    }
  location / {
        proxy_pass http://web/;
    }
  listen 8000;
  server_name localhost;
}

我第一次使用了
docker
,并被这个错误卡住了。任何指导都会非常有用。

web
服务中,只需添加:

environment:
   - NGINX_HOST=foobar.com
   - NGINX_PORT=80
有关更多信息:

我将答案留在这里,以供将来参考

正如我们所调查的,您的docker compose版本(<1.12.0)中使用python3似乎存在一些问题

错误:


他们建议升级到Python 3.4.4+或3.5.1+,应该是固定的。

你在
/config/nginx
中有什么?我在
config/nginx
文件夹中有
server.conf
文件。问题可能就在那里。你能展示一下吗?他们说:升级到Python 3.4.4+或3.5.1+应该可以解决这个问题。谢谢@Robert。它与Python3.5.1+配合使用,但不起作用,因为他没有所需的模板(在文档中提到)