Skip to content

New commands for Dockerfile

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT
Notifications You must be signed in to change notification settings

joehays/dockerfile-plus

 
 

Repository files navigation

Dockerfile+

This project provides Dockerfile syntax extensions that have been rejected by the moby project or haven't been addressed in a long time.

Currently, the project adds an INCLUDE+ Dockerfile directive that allows you to import the content of another file into your Dockerfile. There are plans to add more features in the near future.

Getting started

First, you need to make sure you are running a compatible version of Docker:

  • if you are using Docker 20.10+, you're all set!
  • if you are using Docker 18.09+, then you need to export the following environment variable: DOCKER_BUILDKIT=1
  • if you are using an older version of Docker, you are out of luck. Sorry!

Once your Docker is set, you just need to add the following line as your first line in your Dockerfile:

# syntax = edrevo/dockerfile-plus

That's it!

Features

INCLUDE+

Right now there is just one extra instruction: INCLUDE+. All Dockerfile+ commands will end up with a + sign to avoid any potential future collisions with Dockerfile commands.

INCLUDE+ will import the verbatim contents of another file into your Dockerfile. Here's an example Dockerfile which uses the INCLUDE+ instruction:

# syntax = edrevo/dockerfile-plus

FROM alpine

INCLUDE+ Dockerfile.common

ENTRYPOINT [ "mybin" ]

If Dockerfile.common contained a single line that said RUN echo "Hello World", then the resulting Docker image would be identical to the one generated by this Dockerfile:

FROM alpine

RUN echo "Hello World"

ENTRYPOINT [ "mybin" ]

Roadmap

The next features in line would be:

  • ENVFILE+ command, which would read a .env file and import all of those environment variable definitions into the Dockerfile
  • RUN+ --no-cache, which would disable the cache only for a specific RUN step (useful for non-idempotent commands, for example those that clone git repos)
  • TAG command
  • improvements to .dockerignore, like recursive dockerignore files

Feedback

Found a bug? Want to contribute a PR? Want to improve documentation or add a cool logo for the project? All contributions are welcome!

Development environment

Install cargo (you can use rustup.rs) and run:

$ cargo build

Creating a local release of the Buildkit frontend

$ docker build -f dockerfile-plus/Dockerfile .

About

New commands for Dockerfile

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Rust 98.6%
  • Other 1.4%