Earlier I had an issue in which my machine wasn’t able to connect to the Django webserver (runserver) inside the container, even though I had the correct port published using Docker, so, this is the solution.

By default the app runs on 127.0.0.1:8000 and has ALLOWED_HOSTS = [] this means that the app will only allow connections from within the container but since we want to access to the application from our local machine we need to change the following:

Under <yourappname>/settings.py :

ALLOWED_HOSTS = [] to ALLOWED_HOSTS = [‘*’]

And when you run the application pass the following arguments:

# python manage.py runserver 0.0.0.0:8000

Instead of ‘binding’ to the default 127.0.0.1:8000 by using 0.0.0.0 it will bind to every interface (lo, ethX, etc).

Introduction

We all know, once the main process in any given container stops running, well, our container stops as well and every log goes with it. Well, creating a volume might just be solution.

Problem

What happens when we have a container that ‘fails’ and we don’t really have a way to know why such thing happen since now that our container is dead, well, logs and everything else have died as well.

A nice way to approach this problem is to create a local host volume to store our container(s) log files for any given application, for this example we are using NGINX.

Example & Solution — Volume Creation

Let’s say we have a custom Nginx image that is giving us problems and dies after an ‘X’ amount of time and we have no way to know what is happening since we can’t access such logs, well, let’s create a local host volume that will include every Nginx log file!

Iron Router Vocabulary

Routes: A route is the basic building block of routing. It’s basically the set of instructions that tell the app where to go and what to do when it encounters a URL.

Paths: A path is a URL within your app. It can be static (/about) or dynamic (/posts/abc), and even include query parameters (/search?keyword=meteor).

Segments: The different parts of a path, delimited by forward slashes (/).

Hooks: Hooks are actions that you’d like to perform before, after, or even during the routing process. A typical example would be checking if the user has the proper rights before displaying a page.

Filters: Filters are simply hooks that you define globally for one or more routes.

Route Templates: Each route needs to point to a template. If you don’t specify one, the router will look for a template with the same name as the route by default.

Layouts: You can think of layouts as a “frame” for your content. They contain all the HTML code that wraps the current template, and will remain the same even if the template itself changes.

Controllers: Sometimes, you’ll realize that a lot of your templates are reusing the same parameters. Rather than duplicate your code, you can let all these routes inherit from a single routing controller which will contain all the common routing logic.