Я бегу Linux Монетный двор с Python 3.6.
Я прочитал каждую ссылку здесь, но не могу понять, что не так. Я запускаю простое приложение flask, которое прекрасно работает, когда я запускаю его локально на своей машине, но затем запускаю его с Docker Я не могу получить доступ к IP в своем браузере.
У меня есть установите приложение flask для запуска на хосте 0.0.0.0
, с app.run(host='0.0.0.0')
.
Dockerfile:
FROM python:3.7
RUN mkdir -p /var/app
WORKDIR /var/app
COPY . /var/app
RUN pip install --upgrade pip
RUN pip install -r requirements.txt
EXPOSE 5000
CMD ["pytest", "-v", "tests/test_flask_api.py"]
# CMD ["python3", "app.py"]
CMD ["python3", "-m", "Flask", "run", "--host=0.0.0.0"]
docker -compose.yml:
web:
build: ./app
ports:
- "5000:5000"
volumes:
- .:/code
После запуска команды docker-compose up -d
для построения и запуска контейнера я запускаю команду docker inspect --format '{{ .NetworkSettings.IPAddress }}'
, чтобы получить IP-адрес контейнера как 172.17.0.2
.
Я пытаюсь получить доступ к сайту через 172.17.0.2:5000
и localhost:5000
, но оба просто зависают и не загружаются.
Наконец я набрал docker exec -it restapimma_web_1 /bin/bash
, чтобы попасть в контейнер. Затем я запустил curl localhost:5000
и смог получить правильный ответ. Так что приложение flask работает внутри контейнера, я просто не могу получить к нему доступ вне контейнера.