Как вытащить nginx из Docker и запустить его только в скрипте Python - PullRequest
0 голосов
/ 25 апреля 2018

Я пытаюсь вытащить nginx из докера, используя библиотеку Python Docker. Потянув за nginx, я хочу запустить его и настроить проверить некоторые запросы RestAPI - только базовые для получения ответа (200 OK).

У меня уже есть следующее:

img = client.images.pull('nginx:latest')
client.containers.run(img, detach=True)

После этих строк я вижу новый докер в списке, полученном здесь:

client.containers.list()

на данный момент ничего не произошло, ничего не получил в http://localhost:8080. что я пропустил? как настроить этот nginx в докере с библиотекой python?


Обновление и дополнительная информация:
Решение порта было очень полезно.
Теперь я могу отправить запрос GET и получить ответ «200 OK»
Но теперь, когда я пытаюсь отправить запрос POST, я получил «405 Not Allowed».
В быстром поиске в Google я обнаружил, что мне нужно настроить nginx.config таким образом:

server {
    listen       80;
    server_name  localhost;

    location / {
        root   html;
        index  index.html index.htm;
    }

    error_page  404     /404.html;
    error_page  403     /403.html;

    # To allow POST on static pages
    error_page  405     =200 $uri;

    # ...
}

Теперь у меня вопрос: как мне настроить этот файл с помощью Docker API? Это правильное решение? заменить 405 на 200 ??

Спасибо.

Ответы [ 2 ]

0 голосов
/ 25 апреля 2018

Необходимо установить привязку порта. Попробуйте следующую команду:

client.containers.run(img, detach=True, ports={'80/tcp': 8080})

Параметр ports указывает демону Docker выставить порт 80 внутри контейнера Nginx как порт 8080 на хосте.

Я рекомендую вам сначала ознакомиться с описанием API: https://docker -py.readthedocs.io / en / stable / container.html

0 голосов
/ 25 апреля 2018

Вы должны установить отображение портов во время настройки container.run ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...