Ответы пользователя по тегу Docker
  • Как освободить 443 порт?

    @dronmaxman
    VoIP Administrator
    Запустить докер на другом порту (8443), а на nginx настроить проксирование на этот порт.
    Ответ написан
    Комментировать
  • Почему Nginx из докер композа не видит соседний контейнер?

    @dronmaxman
    VoIP Administrator
    docker run --restart unless-stopped -p 5001:5050 -d --name api --network nginx-proxy-man projsharp-api:2023_04_02__19_52_17


    Зачем ты порт вытаскиваешь, если все равно подключаешь его в одну сеть nginx-proxy-man, -p можно убрать.

    Поправить nginx конфиг
    
     location /api/ {
                    proxy_pass              http://api:5050/api/;
        }
    Ответ написан
    Комментировать
  • Почему контейнер не видит SSL-сертификат?

    @dronmaxman
    VoIP Administrator
    Рабочий пример.

    app.run(host='0.0.0.0', port=8095, debug=False)
    
    
    services:
      app:
        command: python wsgi_docker.py
    nginx:
        volumes:
          - ./file_setting/fullchain.pem:/etc/nginx/fullchain.pem
          - ./file_setting/privkey.pem:/etc/nginx/privkey.pem
        build: ./nginx
        container_name: t_nginx
        restart: always
        ports:
            - 80:95
            - 443:96
        depends_on:
          - app
    
    
    server {
        listen 95;
        server_name my_domain.ru www.my_domain.ru;
        return 301 https://$host$request_uri;
    }
    server {
        listen 96 ssl;
        server_name my_domain.ru www.my_domain.ru;
    
        ssl_certificate fullchain.pem;
        ssl_certificate_key privkey.pem;
        location / {
            proxy_pass "http://app:8095/";
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header Host $host;
        }
    }


    > Получается, что нельзя на одном домене поднять несколько докеров с SSL(раз 443 дам 1му докеру)?
    Архитектура такая. Тебе нужен nginx, не важно как он будет запущен (docker или localhost), nginx будет держать сертификат и слушать порты 80 и 443. Т.к. у тебя домен один и порт тоже, то трафик надо рулить url.

    services:
      app1:
        command: python wsgi_docker.py
     app2:
        command: python wsgi_docker.py
     app3:
        command: python wsgi_docker.py
       nginx:
          ports:
            - 80:95
            - 443:96
         
    server {
        listen 96 ssl;
         server_name my_domain.ru www.my_domain.ru;
       
        ssl_certificate fullchain.pem;
        ssl_certificate_key privkey.pem;
    
    location /app1 {
            proxy_pass "http://app1:8095/";
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header Host $host;
        }
    location /app2 {
            proxy_pass "http://app2:8095/";
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header Host $host;
        }
    location /app3 {
            proxy_pass "http://app3:8095/";
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header Host $host;
        }
    }


    Стучаться соответственно на

    https://domain.ru/app1
    https://domain.ru/app2
    https://domain.ru/app3
    Ответ написан
    Комментировать