带有共享托管的端口80上的Docker Nginx

时间:2019-03-13 10:37:05

标签: docker nginx

我正在尝试在托管多个网站的计算机上部署nginx / gunicorn / django堆栈。而且我可以在最终需要的除80端口之外的任何其他端口上执行此操作,因为HTTP守护程序正在使用该端口。而且我不知道杀死httpd进程的后果。在我部署docker之前,php已使用cpanel在此网站上运行。

使用:80端口的进程是

tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      22466/httpd 
tcp6       0      0 :::80                   :::*                    LISTEN      22466/httpd

有任何提示或想法吗?

编辑: 我的配置文件可以工作8000端口,当我将端口更改为80时,我遇到的问题是:

docker-compose.yml

version: '2'
services:
  nginx:
    image: nginx:latest
    container_name: ng01
    ports:
      - "8000:8000"
    volumes:
      - ./src:/src
      - ./config/nginx:/etc/nginx/conf.d
      - /static:/static
      - ./src/media:/media
    depends_on:
      - web
  web:
    build: .
    container_name: dg01
    command: bash -c "python manage.py collectstatic --no-input && python manage.py makemigrations && python manage.py migrate && gunicorn mydjango.wsgi -b 0.0.0.0:8000"
    depends_on:
      - db
    volumes:
      - ./src:/src
      - /static:/static
      - /media:/media
    expose:
      - "8000"

  db:
    image: postgres:latest
    container_name: ps01

nginx conf

upstream web {
  ip_hash;
  server web:8000;
}

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

  location /media/ {
      autoindex on;
      alias /media/;
  }

  location / {
      proxy_pass http://web/;
  }
  listen 8000;
  server_name server_domain_here;
}

1 个答案:

答案 0 :(得分:0)

在docker中,您可以将容器内部使用的端口80重定向到主机上的另一个端口。

docker run -d -p 8080:80 <your image>

那么您的主机将不会有冲突。