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
image
key in yourokteto.yaml
with 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