targd is multistage build helper. targd outputs dependent stage of the specified target stage. (includes target stage)
go get github.com/orisano/targd
$ targd
-f string
Dockerfile path (default "Dockerfile")
-o string
generated Dockerfile path (default "-")
-target string
target stage name (required)
$ targd -target test | docker build -f - .
or
$ docker run -v $(PWD):/host orisano/targd -f /host/Dockerfile -target production
# ./Dockerfile
FROM alpine:3.8 as builder
COPY ./depfile ./lockfile ./
RUN install_cmd
COPY . .
RUN build_cmd
FROM builder as test
RUN test_cmd
FROM alpine:3.8 as runtime
COPY --from=builder /bin/app /bin/app
ENTRYPOINT ["/bin/app"]
CMD ["--help"]
$ targd -target test
FROM alpine:3.8 as builder
COPY ./depfile ./lockfile ./
RUN install_cmd
COPY . .
RUN build_cmd
FROM builder as test
RUN test_cmd
$ targd -target runtime
FROM alpine:3.8 as builder
COPY ./depfile ./lockfile ./
RUN install_cmd
COPY . .
RUN build_cmd
FROM alpine:3.8 as runtime
COPY --from=builder /bin/app /bin/app
ENTRYPOINT ["/bin/app"]
CMD ["--help"]
Nao Yonashiro (@orisano)
MIT