Ever since Anaconda started getting in my way during this year's PyCon sprints, I have been moving my development away from conda and into other virtual environment tools that are part of the Python ecosystem. Still have conda installed on my system (and, yes, the sticker is still on my laptop), but it needs to be activated it through a bash function:
$ gogoconda Conda is activated
Now I'm all in Python 3.6.1, virtualenv, and virtualenvwrapper as part of my default Python install. Even went as far as adding
alias python='python3' and
alias pip='pip3' to the bottom of my
I really didn't want to go back to Conda for a single workshop, so I decide to fire up Docker and
docker build an image from the provided
Dockerfile. A few minutes (and a
docker run) later, I'm SSH-ed into a container and I notice that the course material are inside of the container with me. That could be a problem... whatever changes I make will disappear once this container is removed.
As stated in the Docker docs, the best way to store data is through the use of a data volume, i.e. a persistent folder on the local machine that is running the Docker Engine. After fixing the
Dockerfile and rebuilding the image, I initialize a new container using the
-v /full/path/to/local/folder:/full/path/to/folder/inside/container flag as part of the
docker run command.
Now, the data inside of my container is actually stored in a folder on my local drive. My development environment, containing all the required dependencies for my project, is completely isolated from everything else on my system.
Boom 🐳 🐳 🐳
Portability just like that. No more worrying about hardware failures and having to spend hours getting my system back to the state where everything just worked. No wonder everyone loves Docker!
During the month of July, I will be doing all my development work inside of Docker containers. No matter how trivial the task, it will be done inside of a container.
Not sure how I'm going to do this at work since Docker for Windows requires Win10 and I'm stuck with Win7. Might have to run a Debian VM or use Docker Toolbox. That's on me.
I plan to keep semi-detailed notes while I experiment and figure out what workflow works best. Building off a slim base image? Have a "batteries included" ready-to-go container for data analysis projects? Stay tuned!