docker ERROR:for nginx无法启动服务nginx:驱动程序无法编程外部连接

时间:2018-06-03 09:39:28

标签: docker nginx

我是Docker的新用户并使用Django

设置我的第一个Docker应用程序

我的申请路径如下

app
 |- helloworld
    |- __init__.py
    |- manage.py
 |- static_cdn
    |- static_root
 |- config
    |- nginx
       |- nginx.conf
 |- Dockerfile
 |- docker-compose.yml
 |- requirements.txt
 |- start.sh

Docerfile

的内容
FROM ubuntu:18.04

# -- Install Pipenv:
FROM python:3
ENV PYTHONUNBUFFERED 1

ENV LC_ALL C.UTF-8
ENV LANG C.UTF-8

# -- Install Application into container:
RUN set -ex && mkdir /app

WORKDIR /app
ADD requirements.txt /app/

RUN pip install -r requirements.txt

# -- Adding dependencies:
ADD . /app/

docker-compose.yml

的内容
version: '3'

services:
  nginx:
    image: nginx:latest
    ports:
      - "9010:9010"
    volumes:
      - .:/app
      - ./config/nginx:/etc/nginx/conf.d
      - ./static_cdn:/static
    depends_on:
      - web
  web:
    build: .
    command: ./start.sh
    volumes:
      - .:/app
      - ./static_cdn:/static
    ports:
      - "9010:9010"
    depends_on:
      - db
    expose:
      - "9010"
  db:
    image: postgres

config/nginx/nginx.conf

的内容
upstream web {
    ip_hash;
    server web:9010;
}

server {
    location /static {
        autoindex on;
        alias /static/
    }

    location / {
        proxy_pass http://127.0.0.1;
    }
    listen 9011;
    server_name localhost;
}

start.sh

的内容
#!/usr/bin/env bash

# Start Gunicorn processes
echo --: Starting application build
echo --: Creating migration
exec python3 manage.py makemigrations
echo ------: makemigrations complete
echo --: Running migration
exec python3 manage.py migrate
echo ------: migrate complete
echo --: Running collectstatic
exec python3 manage.py collectstatic
echo ------: collectstatic complete
echo Starting Gunicorn.
exec gunicorn helloworld.wsgi:application \
    --bind 0.0.0.0:9010 \
    --workers 3

现在,当我使用docker

构建时
docker-compose up --build

它给出错误

  

错误:对于nginx无法启动服务nginx:驱动程序失败   在端点koober_nginx_1上编程外部连接   (8ea5c084a7283a16afbf136a73dc4b27d9cae35fe14d735b83199ad5d0e03431):   绑定0.0.0.0:9010失败:端口已分配

我已经按照一些教程来创建这些Docker文件和nginx conf文件。

1。我该如何解决上述问题 2.我是否需要在上述配置中使用FROM ubuntu:18.04

  

编辑2

现在,它在从start.sh命令创建迁移后陷入困境 enter image description here

2 个答案:

答案 0 :(得分:1)

您无法为这两项服务分配主机的端口9010。 这就是您在服务声明nginx和Web的#include <test.h> int main(int argc, char** argv) { print(); // undefined reference to `print()' A a; a.print(); // undefined reference to `A::print() const' return 0; } 部分中所做的事情。

此外,默认情况下,nginx将侦听端口80和443以获取https。

您可以保持这样并发布到主机上的其他端口。了解如何在docker-compose中使用ports关键字:

https://docs.docker.com/compose/compose-file/#ports

也许你想要更像这样的东西:

port

config / nginx / nginx.conf的内容

version: '3'

services:
  nginx:
    image: nginx:latest
    ports:
      - "10080:80"
      - "10443:443"
    volumes:
      - .:/app
      - ./config/nginx:/etc/nginx/conf.d
      - ./static_cdn:/static
   depends_on:
      - web

  web:
    build: .
    command: ./start.sh
    container_name: "web-app"
    volumes:
      - .:/app
      - ./static_cdn:/static
    expose:
      - "9010"
    depends_on:
      - db

  db: 
    image: postgres

关于你的上一个问题,你可以从Docker hub Python repository获取官方Python图像,或从任何其他基本图像开始,如debian:来自Debian official repository的jessie-slim或保留Ubuntu 18.04图像

答案 1 :(得分:0)

杀死所有 nginx 进程。

sudo killall nginx

然后

docker-compose up --build