Django Docker

Posted onby admin

With version 0.9.0 and later, the Docker extension provides more support for debugging applications within Docker containers, such as scaffolding launch.json configurations for attaching a debugger to applications running within a container.

The Docker extension provides a docker debug configuration provider that manages how VS Code will launch an application and/or attach a debugger to the application in a running Docker container. This provider is configured via entries within launch.json, with configuration being specific to each application platform supported by the provider.

The Docker extension currently supports debugging Node.js, Python, and .NET Core applications within Docker containers.

Django Tutorials What is Django? Django is a high-level Python Web framework that encourages rapid development and clean pragmatic design. A Web framework is a set of components that provide a standard way to develop websites fast and easily. Django’s primary goal is to ease the creation of complex database-driven websites.

  1. Django is an opinionated framework and I've added a few extra opinions based on having Dockerized and deployed a number of Django projects. Here's a few (but not all) note worthy additions and changes. Packages and extensions: gunicorn for an app server in both development and production.
  2. This is a step-by-step tutorial that details how to configure Django to run on Docker with Postgres. For production environments, we'll add on Nginx and Gunicorn. We'll also take a look at how to serve Django static and media files via Nginx. Dependencies: Django v3.0.7; Docker v19.03.8; Python v3.8.3; Django on Docker.

Requirements

Scaffolding or pasting a launch configuration into launch.json is not sufficient to build and debug a Docker container. To successfully run a Docker launch configuration, you must have:

  • A Dockerfile.
  • docker-build and docker-run tasks in tasks.json.
  • A launch configuration that invokes these tasks.

We recommend using the Docker: Add Docker Files to Workspace... command to create these items, if none of these assets already exist. If you already have a functional Dockerfile, we recommend using the Docker: Initialize for Docker debugging command to scaffold a launch configuration and Docker-related tasks.

Node.js

More information about debugging Node.js applications within Docker containers can be found at Debug Node.js within a container.

Docker

Example launch.json configuration for debugging a Node.js application:

Python

More information about debugging Python applications within Docker containers can be found at Debug Python within a container.

Example launch.json configuration for debugging a Python application:

.NET Core

More information about debugging .NET Core applications within Docker containers can be found in Debug .NET Core within Docker containers.

The previous (Preview) .NET Core Docker debugging support (utilizing 'type': 'docker-coreclr' instead of the current preview's 'type': 'docker') is being deprecated. You can still find documentation on that support at Debug .NET Core - Deprecated.

Example launch.json configuration for debugging a .NET Core application:

Django

Configuration reference

Docker
PropertyDescription
containerNameName of the container used for debugging.
dockerServerReadyActionOptions for launching a browser to the Docker container. Similar to serverReadyAction, but replaces container ports with host ports.
removeContainerAfterDebugWhether to remove the debug container after debugging.
platformThe target platform for the application. Can be netCore or node.
netCoreOptions for debugging .NET Core projects in Docker.
nodeOptions for debugging Node.js projects in Docker.
pythonOptions for debugging Python projects in Docker.

dockerServerReadyAction object properties

PropertyDescription
actionThe action to take when the pattern is found. Can be debugWithChrome or openExternally.
containerNameThe container name to match the host port.
patternThe regex pattern to look for in Debug console output.
uriFormatThe URI format to launch.
webRootThe root folder from which web pages are served. Used only when action is set to debugWithChrome.

node object properties

These properties are the same as those described in the VS Code documentation for attaching a debugger to Node.js applications. All properties passed in the node object will be passed on to the Node.js debug adaptor, even if not specifically listed below.

PropertyDescriptionDefault
portOptional. The debug port to use.9229
addressOptional. TCP/IP address of the debug port.
sourceMapsOptional. Enable source maps by setting this to true.
outFilesOptional. Array of glob patterns for locating generated JavaScript files.
autoAttachChildProcessesOptional. Track all subprocesses of debuggee and automatically attach to those that are launched in debug mode.
timeoutOptional. When restarting a session, give up after this number of milliseconds.
stopOnEntryOptional. Break immediately when the program launches.
localRootOptional. VS Code's root directory.The root workspace folder.
remoteRootOptional. Node's root directory within the Docker container./usr/src/app
smartStepOptional. Try to automatically step over code that doesn't map to source files.
skipFilesOptional. Automatically skip files covered by these glob patterns.
traceOptional. Enable diagnostic output.
Django

python object properties

PropertyDescriptionDefault
hostThe host for remote debugging.
portThe port for remote debugging.5678
pathMappingsMaps the project path between local machine and remote host.
projectTypeType of Python app.
justMyCodeDebug only user-written code.
djangoDjango debugging.false
jinjaJinja template debugging (such as Flask).false

netCore object properties

Django

Django Docker Nginx

Properties passed in the netCore object are generally passed on to the .NET Core debug adaptor, even if not specifically listed below. The complete list of debugger properties is in the OmniSharp VS Code extension documentation.

PropertyDescription
appProjectThe .NET Core project (.csproj, .fsproj, etc.) to debug.

Next steps

Django Docker Postgres

Read on to learn more about: