Estoy tratando de conectarme a una instancia de django que se ejecuta en docker. Por lo que puedo decir, abrí el puerto correcto y veo en docker ps que hay tcp en el puerto 8000, pero no hay reenvío al puerto.
Después de leer los documentos de redacción de la ventana acoplable en los puertos, espero que esto funcione (también puedo ver pgadmin en 127.0.0.1:9000).
Mi ventana acoplable compone:
version: '3' services: postgresql: restart: always image: postgres:latest environment: POSTGRES_USER: pguser POSTGRES_PASSWORD: pgpassword POSTGRES_DB: pgdb pgadmin: restart: always image: dpage/pgadmin4:latest environment: PGADMIN_DEFAULT_EMAIL: admin@admin.com PGADMIN_DEFAULT_PASSWORD: admin GUNICORN_THREADS: 4 PGADMIN_LISTEN_PORT: 9000 volumes: - ./utility/pgadmin4-servers.json:/pgadmin4/servers.json depends_on: - postgresql ports: - "9000:9000" app: build: . environment: POSTGRES_DB: pgdb POSTGRES_USER: pguser POSTGRES_PASSWORD: pgpassword POSTGRES_HOST: postgresql volumes: - .:/code ports: - "127.0.0.1:8000:8000" - "5555:5555" depends_on: - postgresql - pgadmin He intentado con las siguientes combinaciones para ports (aplicaciones), como se sugiere aquí :
app: ... ports: - "8000" - "8000:8000" - "127.0.0.1:8000:8000" pero sigo viendo This site can't be reached 127.0.0.1 refused to connect. al intentar acceder al sitio.
Estoy seguro de que se trata de un problema de reenvío de puertos y de que mi servidor se está convirtiendo correctamente en django porque puedo ejecutar una ventana acoplable adjunta al contenedor y curvar una URL con la respuesta esperada.
¿Qué estoy haciendo mal?
Estaba ejecutando mi aplicación usando el comando:
docker-compose run app python3 manage.py runserver 0.0.0.0:8000 Con docker-compose necesita usar el argumento --service-ports para:
Ejecute el comando con los puertos del servicio habilitados y asignados al host.
Por lo tanto, mi comando final se veía así:
docker-compose run --service-ports app python3 manage.py runserver 0.0.0.0:8000 La documentación sobre la run se puede encontrar aquí
Si está ejecutando docker dentro de una máquina virtual, debe acceder a su aplicación a través de la dirección IP de la máquina virtual y no usar localhost o 127.0.0.1 . Intente obtener la IP de la máquina virtual. También especifique en qué plataforma/entorno instaló y ejecutó la ventana acoplable.