Development images
Development images allow you to configure the runtime of your Development Containers. Instead of having to keep a wiki with a never-ending list of tools, dependencies, and scripts to install and run, you can pack all of it in the development images of your Development Containers.
Overview
At a high level, a development image is a Docker container image that contains:
- One or more language runtimes (e.g python, ruby, node)
 - SDKs for your language runtime (e.g JDK, python-dev)
 - Binary dependencies (e.g. openssl, git)
 - Tools to manage and install dependencies (e.g. pip, bundler, yarn)
 - Tools to run your tests and analyze your code (e.g nosetest, pylint)
 - Your source code
 
Out of the box, Okteto maintains pre-configured development images in this GitHub repository for the following languages:
- dotnetcore
 - golang
 - java
 - node
 - php
 - python
 - ruby
 - rust
 
Create your own
The default development images are a great way to start. They use the latest official docker images for your language runtime and include the most common developer tools and a custom bash prompt. But they might not have everything you need. Your team might need to support a very specific version of your runtime, or you might need some extra tooling available.
Do the following to create your own development image:
- Create a Dockerfile
 - Pick a base image
 - Add your extra dependencies, tools, and files
 - Build your image in the build section of the Okteto manifest
 - Update the 
imagekey in yourokteto.yamlwith your new image using the OKTETO_BUILD_XXX variables 
Besides following Docker's best practices, we also recommend the following:
- Pin all your dependencies, so there aren't any surprises
 - Keep the Dockerfile in your repository, next to your code
 - When using multi-stage builds, use your builder stage to build your development image