Giter Site home page Giter Site logo

githk / dockerfiles-forked Goto Github PK

View Code? Open in Web Editor NEW

This project forked from itisfoundation/dockerfiles

0.0 2.0 0.0 464 KB

A collection of curated and reusable dockefiles created at IT'IS Foundation

License: MIT License

Makefile 32.82% Dockerfile 17.25% Shell 24.28% Python 25.64%

dockerfiles-forked's Introduction

dockerfiles

Build Status

A collection of curated dockefiles used to develop great software at the IT'IS Foundation

Why?

During our development workflow we use a great variety of thirdparty software tools (e.g. compilers, debuggers, package managers, ...) or services (e.g. CI services, artifacts repositories, monitoring services, ...) . Each of these have a very specific setup and version which is tuned to our needs at that point in time. Encapsulating all these tools in containers allows us to snapshot the tool/service and using it anytime without having to deal with tedious installation following some wiki step-by-step instructions.

This repo keeps a curated list of dockerfiles that are continuously deployed into our public itis-dockerhub repo.

Usage

$ make help
help                 This colourful help
build                Builds all images (uses cache)
build-nc             Builds all images from scratch
devenv               Builds python environment and installs some tooling for operations
clean                Cleans all unversioned files in project

Guidelines

Here some of the guidelines we have collected so far:

  1. Every container MUST be defined on its own folder and in a Dockerfile

    1. Dockerfiles SHALL be written following best practices
  2. Every image MUST include some of the labels defined in label-schema.org

  3. One of the image names MUST be formatted as itisfoundation/${folder-name}:${tag}.

  4. Releases MUST be tagged according to semantic versioning and the corresponding alias (e.g. latest, X.Y, etc)

  5. Every image MUST build from make build

  6. Containers SHALL not address many applications at once

    1. One application per container is the prefered setup. E.g. the cookiecutter containers runs the application with the same name

    2. If this is not the case, they SHALL be refered as toolkits. For instance, pip-kit is a container with several python package management tools that can run with many applications, namely pip-sync, pip-compile, pipdeptree and pipreqs

  7. Containers with mounted volumes MUST run using the same uid:gid as the mounted volume.

  8. Configuration information SHALL be passed into the container as environment variables prefixed with the name of the container.

  9. The "payload" of the container SHALL be run with 'exec' at the end of the entrypoint.sh script to make sure signals get passed properly.

  10. If the "payload" has no explicit internal signal handling add tini as an init replacement (same effect as when running the docker with --init) https://github.com/krallin/tini

  11. You MUST change your version file for each Pull request following the Semantic Versioning

GitHub workflow

This repository defines a custom action action-build-and-push which is responsible for building, testing and pushing images to a registry (defaults to Docker Hub).

To enable github workflow the following Git Hub secrets must be defined:

  • DOCKER_HUB_USER Docker Hub username
  • DOCKER_HUB_PASSWORD Docker Hub token (password usage is not advised)
  • DOCKER_HUB_TARGET_REGISTRY_NAME if using an organization might be different then the login credentials

Projects under workflow:

  • docker-registry-sync

To test locally please you would need to install act and use the same secret names as environment variables following in a .env file:

  • DOCKER_HUB_USER
  • DOCKER_HUB_PASSWORD
  • DOCKER_HUB_TARGET_REGISTRY_NAME

Travis workflow

worklow

Starting a new project in this repository

Follow the README in the folder example-config.

References

Selection of publications worth reading on this topic:

dockerfiles-forked's People

Contributors

pcrespov avatar oetiker avatar sanderegg avatar ignapas avatar odeimaiz avatar githk avatar dependabot-preview[bot] avatar surfict avatar dependabot[bot] avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.