How to move docker data directory to another location on Ubuntu

Docker is a popular container management platform that can dramatically speed up your development workflow. It is available as a package on major Linux distributions, including Ubuntu.

The standard data directory used for docker is /var/lib/docker, and since this directory will store all your images, volumes, etc. it can become quite large in a relative small amount of time.

If you want to move the docker data directory on another location you can follow the following simple steps.

Read More »


Backup and restore apt packages on Debian/Ubuntu

Suppose you want to install all the apt packages already installed on one server to another one.

On the source machine execute the following commands to make a list of installed packages and their “states” (installed manually or automatically):

sudo dpkg --get-selections > pkgs_selection.lst
sudo apt-mark showauto > pkgs_auto.lst
sudo apt-mark showmanual > pkgs_manual.lst

Copy files pkgs_selection.lst, pkgs_auto.lst and pkgs_manual.lst to the destination machine.

On the destination machine execute the following commands to install the packages that are installed in the source machine and set the correct “state” for packages:

sudo apt-get install dselect
sudo dselect update
sudo dpkg --set-selections < pkgs_selection.lst
sudo apt-get dselect-upgrade
sudo apt-mark auto $(cat pkgs_auto.lst)
sudo apt-mark manual $(cat pkgs_manual.lst)

A simple Python email gateway

Say you have a Django web application that you want to integrate with emails to make it possibile to send data and files to your web application over SMTP.

The good news is that Python has a simple SMTP daemon in the standard library, together with modules to parse emails. Let’s see how to create a simple email gateway on top of these tools.

Read More »

How to deploy a Django project in 15 minutes with Ansible

In this tutorial I will assume that you are a Django developer and you have built and tested a project locally. It’s time to deploy the project on a public server to let users access your awesome application.

So you need a VPS with an SSH access, then you will access the server, install and configure all necessary software (web server, application server, database server), create a database user, configure Django to use it, copy your Django project on the server, migrate the database, collect static files, trial and error, fix, trial and error, …

All this boring stuff will take some good hours that you should definitely spend in a more profitable way, don’t you think? The good news is that you can automate almost all the work needed to go from a vanilla VPS to a fully deployed server hosting your Django project.

Follow this tutorial and I’ll show you how to leverage the power of Ansible to automate all the needed steps in 15 minutes. Are you ready? Check the time on your clock and follow me!

Read More »

Drop all tables in a database

Sometimes it can be useful to completely drop all tables in a database, for example to reset a DB to a previous version from a backup.

After checking that you are doing this on the right database and that you know what you are doing, you can do this:

SET @tables = NULL;
SELECT GROUP_CONCAT('`', table_name, '`') INTO @tables
 FROM information_schema.tables
 WHERE table_schema = (SELECT DATABASE());
SELECT IFNULL(@tables,'dummy') INTO @tables;

SET @tables = CONCAT('DROP TABLE IF EXISTS ', @tables);
PREPARE stmt FROM @tables;

All credits goes to this guy on Stackoverflow.