Docker Nginx на порту 80 с общим хостингом

#docker #nginx

#докер #nginx

Вопрос:

Я пытаюсь развернуть nginx / gunicorn / django stack на компьютере, где размещено несколько веб-сайтов. И я могу сделать это на любых других портах, кроме порта 80, который в конечном итоге мне понадобится, потому что HTTP daemon использует это. И я не знаю о последствиях завершения процесса 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 amp;amp; python manage.py makemigrations amp;amp; python manage.py migrate amp;amp; 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:

В docker вы можете перенаправить порт 80, который используется внутри контейнера, на другой порт на хосте.

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

тогда у вас не будет конфликта на вашем хостинге.

Комментарии:

1. В моем docker-compose.yml у меня установлен порт «8000: 8000» для nginx, должен ли я удалить это, или эта команда переопределит его? Кроме того, спасибо за ваши усилия помочь

2. Если вы используете docker-compose, то вы можете изменить перенаправление там. Как выглядит ваш docker-compose.yml?

3. Я добавил свой nginx conf и файл docker-compose. И, как я упоминал в сообщении, на данный момент он стоит 8000 долларов и работает должным образом. Проблема возникает, когда я меняю все 8000 на 80, затем он сообщает мне, что порт 80 уже выделен. Также, когда я пытаюсь использовать 80, я удаляю часть expose из docker compose, поскольку она уже доступна.

4. Ну да, порт 80 можно использовать только один раз.