Dockerlint
Linting tool for Dockerfiles based on recommendations from
Dockerfile Reference and Best practices for writing Dockerfiles as of Docker 1.6.
Install
With npm just do:
$ [sudo] npm install -g dockerlint
Usage
Once installed it's as easy as:
dockerlint Dockerfile
Which will parse the file and notify you about any actual errors (such an
omitted tag when :
is set), and warn you about common pitfalls or bad idiom
such as the common use case of ADD
.
In order to treat warnings as errors, use the -p
flag.
Docker image
Alternatively there is a Docker image available.
This image provides a quick and easy way to validate your Dockerfiles, without
having to install Node.JS and the dockerlint dependencies on your system.
First fetch the image from the Docker Hub:
docker pull redcoolbeans/dockerlint
You can either run it directly, or use docker-compose.
docker run
For a quick one-off validation:
docker run -it --rm -v "$PWD/Dockerfile":/Dockerfile:ro redcoolbeans/dockerlint
docker-compose
For docker-compose use a docker-compose.yml
such as the following:
---
dockerlint:
image: redcoolbeans/dockerlint
volumes:
- ./Dockerfile:/Dockerfile
Then simply run:
docker-compose up dockerlint
This will validate the Dockerfile
in your current directory.
Running from a git clone
If you've cloned this repository, you will need the following prerequisites:
- make
- npm
- coffee
Installing prerequisites on ubuntu:
sudo apt-get update
sudo apt-get install make
sudo apt-get install npm
sudo ln -s /usr/bin/nodejs /usr/bin/node
sudo npm install -g coffee-script
You can run dockerlint
with:
make deps # runs npm install
make js && coffee bin/dockerlint.coffee
If you're building on Windows, you'll have to set the path to your make
:
npm config set dockerlint:winmake "mingw32-make.exe"
or pass it to every invocation:
npm run build:win --dockerlint:winmake=mingw32-make.exe
Roadmap
- Add support for --version which checks against a specific Docker version
- Refactor code to move the rule specific functions into a Rule class
License
MIT, please see the LICENSE file.
Contributing
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request