gpt4 book ai didi

docker 错误 : for nginx Cannot start service nginx: driver failed programming external connectivity on

转载 作者:行者123 更新时间:2023-12-02 18:00:17 25 4
gpt4 key购买 nike

我是新来的 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

它给出了错误

ERROR: for nginx Cannot start service nginx: driver failed programming external connectivity on endpoint koober_nginx_1 (8ea5c084a7283a16afbf136a73dc4b27d9cae35fe14d735b83199ad5d0e03431): Bind for 0.0.0.0:9010 failed: port is already allocated



我遵循了一些教程来创建这些 Docker 文件和 nginx conf 文件。

1. 我该如何解决上述问题。
2.我需要使用FROM ubuntu:18.04吗?上面的配置?


Edit 2



现在,它在从 start.sh 创建迁移后卡住了命令
enter image description here

最佳答案

您不能为这两种服务分配主机的端口 9010。
这就是您在 ports 中所做的nginx 和 web 服务声明部分。

此外,默认情况下,nginx 会为 https 监听端口 80 和 443。

您可以保持这种状态并发布到主机上的不同端口。查看使用方法 port docker-compose 中的关键字:

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

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

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

config/nginx/nginx.conf 的内容
upstream web {
ip_hash;
server web-app:9010;
}

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

location / {
proxy_pass http://web;
}

listen 80;
server_name localhost;
}

关于您的最后一个问题,您可以从 Docker hub Python repository 中获取官方 Python 图像。或者从任何其他基础镜像开始,比如 debian:jessie-slim from Debian official repository或保留 Ubuntu 18.04 镜像

关于 docker 错误 : for nginx Cannot start service nginx: driver failed programming external connectivity on,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50665028/

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