Docker NGINX 设置到 运行 Django 项目给出了无效的端口规范错误
Docker NGINX setup to run Django project is giving invalid port specification error
我正在尝试为我的 Django 项目设置 Docker。我相信我的机器上的一切都已设置为 运行 docker。目前,docker version
给出以下输出:
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 nginx
我把答案留在这里,以备日后参考
根据我们的调查,您的 docker-compose 版本 (< 1.12.0) python3 似乎存在一些问题。
错误:https://github.com/docker/compose/issues/4729
他们建议升级到 Python 3.4.4+ 或 3.5.1+,它应该已修复。
我正在尝试为我的 Django 项目设置 Docker。我相信我的机器上的一切都已设置为 运行 docker。目前,docker version
给出以下输出:
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 nginx
我把答案留在这里,以备日后参考
根据我们的调查,您的 docker-compose 版本 (< 1.12.0) python3 似乎存在一些问题。
错误:https://github.com/docker/compose/issues/4729
他们建议升级到 Python 3.4.4+ 或 3.5.1+,它应该已修复。