An open API service indexing awesome lists of open source software.

https://github.com/airhorns/docker-python-node

:whale: Handy Docker containers with python and node installed securely to use as base images for your application.
https://github.com/airhorns/docker-python-node

alpine containers debian docker node python

Last synced: about 2 months ago
JSON representation

:whale: Handy Docker containers with python and node installed securely to use as base images for your application.

Awesome Lists containing this project

README

          

# docker-python-node [![CircleCI](https://circleci.com/gh/airhorns/docker-python-node.svg?style=svg)](https://circleci.com/gh/airhorns/docker-python-node)

Handy Docker containers with python and node installed securely to use as base Docker images for your application. 🐳✅

# How to Use

Select a Python version, select a Node version, and select an OS that suits your needs, and then pick the tag that includes those. Or, if you want to use the latest, just use `latest` in the place of the version string. When picking your version, you can be specific and use `3.7.0`, or use a major/minor like `3.7`, or just use the major version like `3.` See the exhaustive list of available tags below.

For example, to get Python 3.6.x and Node 8.x.x on Debian Stretch, use the tag `3.6-8-stretch` like so:

```
$ docker run airhorns/python-node:3.6-8-stretch python --version
Python 3.6.6
$ docker run airhorns/python-node:3.6-8-stretch node --version
v8.9.1
```

To use the latest Node version but fix your python version, use the `latest` version string like so:

```
$ docker run airhorns/python-node:3.6-8-stretch python --version
Python 3.6.6
$ docker run airhorns/python-node:3.6-8-stretch node --version
v10.10.0
```

To use the latest of all the stuff and the default OS, just use the `latest` tag:

```
$ docker run airhorns/python-node:latest python --version
Python 3.7.0
$ docker run airhorns/python-node:latest node --version
v10.10.0
```

Tags are always structured like so: `--`.

### Available Software Versions

#### Python:
- 3.7.0, aliased as `latest`, `3`, `3.7`
- 3.6.6, aliased as `3.6`
- 3.5.6, aliased as `3.5`
- 2.7.15, aliased as `2`, `2.7`

#### Node:
- 10.10.0, aliased as `latest`, `10`
- 8.12.0, aliased as `8`
- 6.14.4, aliased as `6`

# Available OSes

- `stretch` - Debian Stretch, from `python:3-stretch` for example. Good default.
- `slim-stretch` - Slim Debian Stretch, from `python:3-slim` for example. Missing lots of things you might be used to having like curl etc, but much smaller.
- `alpine3.8` - Alpine Linux, from `python:3-alpine` for example. Results in very small containers, but has just about nothing other than what it needs to run pythion and node. Can also have a [big performance hit](https://superuser.com/questions/1219609/why-is-the-alpine-docker-image-over-50-slower-than-the-ubuntu-image/1234279) depending on the usage patterns.

# All Available Tags

The currently built tags are:

- __`3.7.0-10.10.0-stretch`__: [![](https://images.microbadger.com/badges/image/airhorns/python-node:3.7.0-10.10.0-stretch.svg)](https://microbadger.com/images/airhorns/python-node:3.7.0-10.10.0-stretch) aliases: `latest-latest-stretch`, `latest-latest`, `latest-10-stretch`, `latest-10`, `3-latest-stretch`, `3-latest`, `3-10-stretch`, `3-10`, `3.7-latest-stretch`, `3.7-latest`, `3.7-10-stretch`, `3.7-10`, `latest`
- __`3.7.0-8.12.0-stretch`__: [![](https://images.microbadger.com/badges/image/airhorns/python-node:3.7.0-8.12.0-stretch.svg)](https://microbadger.com/images/airhorns/python-node:3.7.0-8.12.0-stretch) aliases: `latest-8-stretch`, `latest-8`, `3-8-stretch`, `3-8`, `3.7-8-stretch`, `3.7-8`
- __`3.7.0-6.14.4-stretch`__: [![](https://images.microbadger.com/badges/image/airhorns/python-node:3.7.0-6.14.4-stretch.svg)](https://microbadger.com/images/airhorns/python-node:3.7.0-6.14.4-stretch) aliases: `latest-6-stretch`, `latest-6`, `3-6-stretch`, `3-6`, `3.7-6-stretch`, `3.7-6`
- __`3.6.6-10.10.0-stretch`__: [![](https://images.microbadger.com/badges/image/airhorns/python-node:3.6.6-10.10.0-stretch.svg)](https://microbadger.com/images/airhorns/python-node:3.6.6-10.10.0-stretch) aliases: `3.6-latest-stretch`, `3.6-latest`, `3.6-10-stretch`, `3.6-10`
- __`3.6.6-8.12.0-stretch`__: [![](https://images.microbadger.com/badges/image/airhorns/python-node:3.6.6-8.12.0-stretch.svg)](https://microbadger.com/images/airhorns/python-node:3.6.6-8.12.0-stretch) aliases: `3.6-8-stretch`, `3.6-8`
- __`3.6.6-6.14.4-stretch`__: [![](https://images.microbadger.com/badges/image/airhorns/python-node:3.6.6-6.14.4-stretch.svg)](https://microbadger.com/images/airhorns/python-node:3.6.6-6.14.4-stretch) aliases: `3.6-6-stretch`, `3.6-6`
- __`3.5.6-10.10.0-stretch`__: [![](https://images.microbadger.com/badges/image/airhorns/python-node:3.5.6-10.10.0-stretch.svg)](https://microbadger.com/images/airhorns/python-node:3.5.6-10.10.0-stretch) aliases: `3.5-latest-stretch`, `3.5-latest`, `3.5-10-stretch`, `3.5-10`
- __`3.5.6-8.12.0-stretch`__: [![](https://images.microbadger.com/badges/image/airhorns/python-node:3.5.6-8.12.0-stretch.svg)](https://microbadger.com/images/airhorns/python-node:3.5.6-8.12.0-stretch) aliases: `3.5-8-stretch`, `3.5-8`
- __`3.5.6-6.14.4-stretch`__: [![](https://images.microbadger.com/badges/image/airhorns/python-node:3.5.6-6.14.4-stretch.svg)](https://microbadger.com/images/airhorns/python-node:3.5.6-6.14.4-stretch) aliases: `3.5-6-stretch`, `3.5-6`
- __`2.7.15-10.10.0-stretch`__: [![](https://images.microbadger.com/badges/image/airhorns/python-node:2.7.15-10.10.0-stretch.svg)](https://microbadger.com/images/airhorns/python-node:2.7.15-10.10.0-stretch) aliases: `2-latest-stretch`, `2-latest`, `2-10-stretch`, `2-10`, `2.7-latest-stretch`, `2.7-latest`, `2.7-10-stretch`, `2.7-10`
- __`2.7.15-8.12.0-stretch`__: [![](https://images.microbadger.com/badges/image/airhorns/python-node:2.7.15-8.12.0-stretch.svg)](https://microbadger.com/images/airhorns/python-node:2.7.15-8.12.0-stretch) aliases: `2-8-stretch`, `2-8`, `2.7-8-stretch`, `2.7-8`
- __`2.7.15-6.14.4-stretch`__: [![](https://images.microbadger.com/badges/image/airhorns/python-node:2.7.15-6.14.4-stretch.svg)](https://microbadger.com/images/airhorns/python-node:2.7.15-6.14.4-stretch) aliases: `2-6-stretch`, `2-6`, `2.7-6-stretch`, `2.7-6`
- __`3.7.0-10.10.0-slim-stretch`__: [![](https://images.microbadger.com/badges/image/airhorns/python-node:3.7.0-10.10.0-slim-stretch.svg)](https://microbadger.com/images/airhorns/python-node:3.7.0-10.10.0-slim-stretch) aliases: `latest-latest-slim-stretch`, `latest-10-slim-stretch`, `3-latest-slim-stretch`, `3-10-slim-stretch`, `3.7-latest-slim-stretch`, `3.7-10-slim-stretch`
- __`3.7.0-8.12.0-slim-stretch`__: [![](https://images.microbadger.com/badges/image/airhorns/python-node:3.7.0-8.12.0-slim-stretch.svg)](https://microbadger.com/images/airhorns/python-node:3.7.0-8.12.0-slim-stretch) aliases: `latest-8-slim-stretch`, `3-8-slim-stretch`, `3.7-8-slim-stretch`
- __`3.7.0-6.14.4-slim-stretch`__: [![](https://images.microbadger.com/badges/image/airhorns/python-node:3.7.0-6.14.4-slim-stretch.svg)](https://microbadger.com/images/airhorns/python-node:3.7.0-6.14.4-slim-stretch) aliases: `latest-6-slim-stretch`, `3-6-slim-stretch`, `3.7-6-slim-stretch`
- __`3.6.6-10.10.0-slim-stretch`__: [![](https://images.microbadger.com/badges/image/airhorns/python-node:3.6.6-10.10.0-slim-stretch.svg)](https://microbadger.com/images/airhorns/python-node:3.6.6-10.10.0-slim-stretch) aliases: `3.6-latest-slim-stretch`, `3.6-10-slim-stretch`
- __`3.6.6-8.12.0-slim-stretch`__: [![](https://images.microbadger.com/badges/image/airhorns/python-node:3.6.6-8.12.0-slim-stretch.svg)](https://microbadger.com/images/airhorns/python-node:3.6.6-8.12.0-slim-stretch) aliases: `3.6-8-slim-stretch`
- __`3.6.6-6.14.4-slim-stretch`__: [![](https://images.microbadger.com/badges/image/airhorns/python-node:3.6.6-6.14.4-slim-stretch.svg)](https://microbadger.com/images/airhorns/python-node:3.6.6-6.14.4-slim-stretch) aliases: `3.6-6-slim-stretch`
- __`3.5.6-10.10.0-slim-stretch`__: [![](https://images.microbadger.com/badges/image/airhorns/python-node:3.5.6-10.10.0-slim-stretch.svg)](https://microbadger.com/images/airhorns/python-node:3.5.6-10.10.0-slim-stretch) aliases: `3.5-latest-slim-stretch`, `3.5-10-slim-stretch`
- __`3.5.6-8.12.0-slim-stretch`__: [![](https://images.microbadger.com/badges/image/airhorns/python-node:3.5.6-8.12.0-slim-stretch.svg)](https://microbadger.com/images/airhorns/python-node:3.5.6-8.12.0-slim-stretch) aliases: `3.5-8-slim-stretch`
- __`3.5.6-6.14.4-slim-stretch`__: [![](https://images.microbadger.com/badges/image/airhorns/python-node:3.5.6-6.14.4-slim-stretch.svg)](https://microbadger.com/images/airhorns/python-node:3.5.6-6.14.4-slim-stretch) aliases: `3.5-6-slim-stretch`
- __`2.7.15-10.10.0-slim-stretch`__: [![](https://images.microbadger.com/badges/image/airhorns/python-node:2.7.15-10.10.0-slim-stretch.svg)](https://microbadger.com/images/airhorns/python-node:2.7.15-10.10.0-slim-stretch) aliases: `2-latest-slim-stretch`, `2-10-slim-stretch`, `2.7-latest-slim-stretch`, `2.7-10-slim-stretch`
- __`2.7.15-8.12.0-slim-stretch`__: [![](https://images.microbadger.com/badges/image/airhorns/python-node:2.7.15-8.12.0-slim-stretch.svg)](https://microbadger.com/images/airhorns/python-node:2.7.15-8.12.0-slim-stretch) aliases: `2-8-slim-stretch`, `2.7-8-slim-stretch`
- __`2.7.15-6.14.4-slim-stretch`__: [![](https://images.microbadger.com/badges/image/airhorns/python-node:2.7.15-6.14.4-slim-stretch.svg)](https://microbadger.com/images/airhorns/python-node:2.7.15-6.14.4-slim-stretch) aliases: `2-6-slim-stretch`, `2.7-6-slim-stretch`
- __`3.7.0-10.10.0-alpine3.8`__: [![](https://images.microbadger.com/badges/image/airhorns/python-node:3.7.0-10.10.0-alpine3.8.svg)](https://microbadger.com/images/airhorns/python-node:3.7.0-10.10.0-alpine3.8) aliases: `latest-latest-alpine`, `latest-latest-alpine3.8`, `latest-10-alpine`, `latest-10-alpine3.8`, `3-latest-alpine`, `3-latest-alpine3.8`, `3-10-alpine`, `3-10-alpine3.8`, `3.7-latest-alpine`, `3.7-latest-alpine3.8`, `3.7-10-alpine`, `3.7-10-alpine3.8`
- __`3.7.0-8.12.0-alpine3.8`__: [![](https://images.microbadger.com/badges/image/airhorns/python-node:3.7.0-8.12.0-alpine3.8.svg)](https://microbadger.com/images/airhorns/python-node:3.7.0-8.12.0-alpine3.8) aliases: `latest-8-alpine`, `latest-8-alpine3.8`, `3-8-alpine`, `3-8-alpine3.8`, `3.7-8-alpine`, `3.7-8-alpine3.8`
- __`3.7.0-6.14.4-alpine3.8`__: [![](https://images.microbadger.com/badges/image/airhorns/python-node:3.7.0-6.14.4-alpine3.8.svg)](https://microbadger.com/images/airhorns/python-node:3.7.0-6.14.4-alpine3.8) aliases: `latest-6-alpine`, `latest-6-alpine3.8`, `3-6-alpine`, `3-6-alpine3.8`, `3.7-6-alpine`, `3.7-6-alpine3.8`
- __`3.6.6-10.10.0-alpine3.8`__: [![](https://images.microbadger.com/badges/image/airhorns/python-node:3.6.6-10.10.0-alpine3.8.svg)](https://microbadger.com/images/airhorns/python-node:3.6.6-10.10.0-alpine3.8) aliases: `3.6-latest-alpine`, `3.6-latest-alpine3.8`, `3.6-10-alpine`, `3.6-10-alpine3.8`
- __`3.6.6-8.12.0-alpine3.8`__: [![](https://images.microbadger.com/badges/image/airhorns/python-node:3.6.6-8.12.0-alpine3.8.svg)](https://microbadger.com/images/airhorns/python-node:3.6.6-8.12.0-alpine3.8) aliases: `3.6-8-alpine`, `3.6-8-alpine3.8`
- __`3.6.6-6.14.4-alpine3.8`__: [![](https://images.microbadger.com/badges/image/airhorns/python-node:3.6.6-6.14.4-alpine3.8.svg)](https://microbadger.com/images/airhorns/python-node:3.6.6-6.14.4-alpine3.8) aliases: `3.6-6-alpine`, `3.6-6-alpine3.8`
- __`3.5.6-10.10.0-alpine3.8`__: [![](https://images.microbadger.com/badges/image/airhorns/python-node:3.5.6-10.10.0-alpine3.8.svg)](https://microbadger.com/images/airhorns/python-node:3.5.6-10.10.0-alpine3.8) aliases: `3.5-latest-alpine`, `3.5-latest-alpine3.8`, `3.5-10-alpine`, `3.5-10-alpine3.8`
- __`3.5.6-8.12.0-alpine3.8`__: [![](https://images.microbadger.com/badges/image/airhorns/python-node:3.5.6-8.12.0-alpine3.8.svg)](https://microbadger.com/images/airhorns/python-node:3.5.6-8.12.0-alpine3.8) aliases: `3.5-8-alpine`, `3.5-8-alpine3.8`
- __`3.5.6-6.14.4-alpine3.8`__: [![](https://images.microbadger.com/badges/image/airhorns/python-node:3.5.6-6.14.4-alpine3.8.svg)](https://microbadger.com/images/airhorns/python-node:3.5.6-6.14.4-alpine3.8) aliases: `3.5-6-alpine`, `3.5-6-alpine3.8`
- __`2.7.15-10.10.0-alpine3.8`__: [![](https://images.microbadger.com/badges/image/airhorns/python-node:2.7.15-10.10.0-alpine3.8.svg)](https://microbadger.com/images/airhorns/python-node:2.7.15-10.10.0-alpine3.8) aliases: `2-latest-alpine`, `2-latest-alpine3.8`, `2-10-alpine`, `2-10-alpine3.8`, `2.7-latest-alpine`, `2.7-latest-alpine3.8`, `2.7-10-alpine`, `2.7-10-alpine3.8`
- __`2.7.15-8.12.0-alpine3.8`__: [![](https://images.microbadger.com/badges/image/airhorns/python-node:2.7.15-8.12.0-alpine3.8.svg)](https://microbadger.com/images/airhorns/python-node:2.7.15-8.12.0-alpine3.8) aliases: `2-8-alpine`, `2-8-alpine3.8`, `2.7-8-alpine`, `2.7-8-alpine3.8`
- __`2.7.15-6.14.4-alpine3.8`__: [![](https://images.microbadger.com/badges/image/airhorns/python-node:2.7.15-6.14.4-alpine3.8.svg)](https://microbadger.com/images/airhorns/python-node:2.7.15-6.14.4-alpine3.8) aliases: `2-6-alpine`, `2-6-alpine3.8`, `2.7-6-alpine`, `2.7-6-alpine3.8`
See the complete list at https://hub.docker.com/r/airhorns/python-node/tags/.

# Usage

Python and Node are installed to the system-wide default location, are on the path, and aren't wrapped by any version managers like `pyenv` or `nvm`. So, you should just be able to invoke `python` or `node` in your dockerfiles or applications and it will just work!

# Contributing

Run `pipenv install` to install the Python dependencies for this project.

This repo is a big folder of Dockerfiles and a build configuration to actually build containers. The containers are built on CircleCI.

The actual Dockerfiles & Circle config is generated by `generate.py` from `config.yml`. To change or add a new version of one of the softwares, add it to `config.yml`, run `generate.py`, and you should find an updated set of Dockerfiles, CircleCI build config, and Readme reporting all the new stuff you've added.

To modify the structure of any of the generated files, examine the Jinja2 templates in the `templates` directory.

This repo is super inspired by https://github.com/starefossen/docker-ruby-node , thanks to Hans for the idea!

# License

MIT