Empieza a desarrollar con Docker

Cómo ejecutar la instancia para el desarrollo

Hay dos opciones para desarrollar utilizando contenedores Docker:

  • Alternativa A: Ejecutar desde la línea de comandos y editar el código usando su editor preferido (generalmente más difícil).

  • Alternativa B: Usar la extensión vscode contenedores remotos (más fácil).

Alternativa A: Construir y ejecutar Docker para el desarrollo

Construir (primera vez solamente):

docker-compose --project-name geonode -f docker-compose-dev.yml -f .devcontainer/docker-compose.yml build

Correr:

docker-compose --project-name geonode -f docker-compose-dev.yml -f .devcontainer/docker-compose.yml up

Nota

Si está ejecutando los servicios postgresql y tomcat9, debe detenerlos, docker-compose se encargará de ejecutar la base de datos y el servicio geonode.

De lo contrario, obtendrás el siguiente error:

ERROR: for db  Cannot start service db: driver failed programming external connectivity on endpoint db4geonode: Error starting userland proxy: listen tcp4 0.0.0.0:5432: bind: address already in use
ERROR: Encountered errors while bringing up the project.

Ejecutar la aplicación geonode en modo de depuración:

docker exec -it django4geonode bash -c "python manage.py runserver 0.0.0.0:8000"

Al ejecutar la aplicación, puedes depurarla utilizando el método que prefieras. Por ejemplo, puedes editar un archivo, guardarlo y ver las modificaciones. También puedes utilizar ipdb para agregar puntos de interrupción e inspeccionar su código (escribiendo import ipdb; ipdb.set_trace() en la línea donde desea colocar el punto de interrupción).

Otra opción es usar debugpy junto con vscode, para esto debes habilitar debugpy dentro de tu contenedor django4geonode:

docker exec -it django4geonode bash -c "pip install debugpy -t /tmp && python /tmp/debugpy --wait-for-client --listen 0.0.0.0:5678 manage.py runserver 0.0.0.0:8000 --nothreading --noreload"

Selecciona «Ejecutar y depurar» en vscode y usa la siguiente instrucción de inicio en su archivo .vscode/launch.json:

launch.json

Alternativa B: Usar la extensión vscode

Como alternativa, puedes desarrollar usando la extensión remote contenedores de vscode. En este enfoque, debes:

  • Instala la extensión en tu vscode: ms-vscode-remote.remote-containers

  • En su paleta de comandos, selecciona: «Contenedores remotos: Reabrir en contenedor»

  • Si es la primera vez, vscode se encargará de generar las imágenes. Esto puede llevar algún tiempo.

  • Luego se abrirá una nueva ventana de vscode y se conectará a su contenedor Docker.

  • El mensaje «Dev Container: Debug Docker Compose» aparecerá en la esquina inferior izquierda de esa ventana.

  • En la terminal vscode, verás algo similar a root@77e80acc89b8:/usr/src/geonode#.

  • Para ejecutar tu aplicación, puedes utilizar la terminal integrada (./manage.py runserver 0.0.0.0:8000) o la opción «Ejecutar y depurar» de vscode. Para ejecutar con «Ejecutar y depurar», utiliza el siguiente archivo de instrucciones:

launch.json

Para obtener más información, lee la página de ayuda de contenedores remotos de vscode https://code.visualstudio.com/docs/remote/containers.