Me resulta difícil tratar de descubrir cómo configurar una depuración remota de una aplicación de Python (Flask) que se ejecuta en un contenedor Docker. Específicamente estoy usando docker-compose, PyCharm professional y python 3.5. Esto es lo que he hecho hasta ahora:
Agregué las siguientes líneas en el archivo wsgi.py:
import sys sys.path.append('../pycharm-debug-py3k.egg') import pydevd pydevd.settrace('0.0.0.0', port=8200, stdoutToServer=True, stderrToServer=True)Creé una configuración de depuración remota en PyCharm (asignando la ruta de mi proyecto de máquina local a la del contenedor acoplable)
al ejecutar la configuración de depuración (haga clic en el ícono de error) desde PyCharm, se imprime (y se cuelga):
Starting debug server at port 4200 Use the following code to connect to the debugger: import pydevd pydevd.settrace('0.0.0.0', port=4200, stdoutToServer=True, stderrToServer=True) Waiting for process connection...... y en los registros del contenedor docker leí:
No se pudo conectar a 0.0.0.0: 4200
¿Qué tengo que hacer? (Mi objetivo es poder agregar puntos de interrupción en PyCharm y detener la ejecución de la aplicación del contenedor acoplable para depurarla)
Use un intérprete remoto, esto resolverá un par de problemas a la vez. Ya respondí esto aquí Editores enriquecidos en un entorno de desarrollo de Docker
Agregue un SDK de python remoto a su IDE, esto también resolverá todas las bibliotecas que se instalan de forma remota. Sin embargo, necesitará una conexión SSH para hacer esto, así que instale sshd y use la clave de desarrollador compartida que describí en mi respuesta.
Aunque esto ahora requiere un poco más de esfuerzo, le daré muchos mejores resultados, también en las otras secciones que aún no encontró y encontrará, al hacer solo una conexión de puerto remoto.
Si aún desea utilizar la depuración basada en puertos, consulte Docker: MacOSX Expose Container ports to host machine . Esto explica cómo debe entender la parte de adjuntar y escuchar.
Use host.docker.internal en lugar de 0.0.0.0 . Esto permitirá que Docker decida qué IP usar.
Tal vez debería conectarse a su propia máquina host que es su pycharm in. No 0.0.0.0 en lugar de su propia dirección IP