Awesome
dockfmt
Dockerfile format.
NOTE: This is a work in progress so calm yourself if you want to file 80 bajillion issues.
<!-- START doctoc generated TOC please keep comment here to allow auto update --> <!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->Table of Contents
<!-- END doctoc generated TOC please keep comment here to allow auto update -->Installation
Binaries
For installation instructions from binaries please visit the Releases Page.
Via Go
$ go get github.com/jessfraz/dockfmt
Usage
$ dockfmt -h
dockfmt - Dockerfile format.
Usage: dockfmt <command>
Flags:
-d, --debug enable debug logging (default: false)
Commands:
base List the base image used in the Dockerfile(s).
dump Dump parsed Dockerfile(s).
fmt Format the Dockerfile(s).
maintainer List the maintainer for the Dockerfile(s).
stages List the stages in the Dockerfile.
workdir List the workdirs for the Dockerfile(s).
version Show the version information.
Format
Get help
$ dockfmt fmt -h
Usage: dockfmt fmt [OPTIONS] [DOCKERFILE...]
Format the Dockerfile(s).
Flags:
-D, --diff display diffs instead of rewriting files (default: false)
-d, --debug enable debug logging (default: false)
-l, --list list files whose formatting differs from dockfmt's (default: false)
-w, --write write result to (source) file instead of stdout (default: false)
Get a diff
$ dockfmt fmt -d htop/Dockerfile
diff htop/Dockerfile dockfmt/htop/Dockerfile
--- /tmp/dockfmt143910590 2016-09-19 15:59:22.612250710 -0700
+++ /tmp/dockfmt412224773 2016-09-19 15:59:22.612250710 -0700
@@ -4,10 +4,11 @@
# --pid host \
# jess/htop
#
-FROM alpine:latest
-MAINTAINER Jessie Frazelle <jess@linux.com>
+
+FROM alpine:latest
+MAINTAINER Jessie Frazelle <jess@linux.com>
-RUN apk --no-cache add \
+RUN apk add --no-cache \
htop
-CMD [ "htop" ]
+CMD ["htop"]
List multiple files with different output
$ dockfmt fmt -l */Dockerfile */*/Dockerfile
ab/Dockerfile
afterthedeadline/Dockerfile
android-tools/Dockerfile
ansible/Dockerfile
apt-file/Dockerfile
atom/Dockerfile
audacity/Dockerfile
awscli/Dockerfile
beeswithmachineguns/Dockerfile
buttslock/Dockerfile
camlistore/Dockerfile
cathode/Dockerfile
...
Base image inspection
$ dockfmt base */Dockerfile */*/Dockerfile
BASE COUNT
debian:stretch 50
alpine:latest 30
debian:sid 28
ubuntu:16.04 12
alpine:edge 7
python:2-alpine 3
ruby:alpine 2
java:7-alpine 2
r.j3ss.co/wine 1
kalilinux/kali-linux-docker 1
haskell 1
mhart/alpine-node:5 1
r.j3ss.co/cpuminer 1
opensuse 1
java:8-alpine 1
golang:latest 1
Maintainer inspection
$ dockfmt maintainer */Dockerfile */*/Dockerfile
MAINTAINER COUNT
Jessie Frazelle <jess@jskdj.com> 113
Christian Koep <christian.koep@ksldkfj.de> 11
Justin Garrison <justinleegarrison@hskdl.com> 2
Daniel Romero <infoslack@jjskl.com> 1
Cris G c@skdlemfhtj.com 1
Stage inspection
$ dockfmt stages Dockerfile
STAGE INTERPOLATED
health-check false
python-deps false
stage-2 true
Workdir inspection
$ dockfmt workdir */Dockerfile */*/Dockerfile
WORKDIR COUNT
/srv 3
/app 1