55 lines
1.7 KiB
Plaintext
55 lines
1.7 KiB
Plaintext
FROM mitchty/alpine-ghc:latest
|
|
|
|
MAINTAINER Nikyle Nguyen <NLKNguyen@MSN.com>
|
|
|
|
RUN apk add --no-cache build-base
|
|
|
|
RUN mkdir -p /usr/src/shellcheck
|
|
WORKDIR /usr/src/shellcheck
|
|
|
|
# # ------------------------------------------------------------
|
|
# # Build & Test
|
|
# # ------------------------------------------------------------
|
|
|
|
# Obtain the dependencies first, which are less likely to change, in order to reduce
|
|
# subsequent build time by leveraging image cache. This benefits developers when they
|
|
# build their code with this image locally. In case of Travis CI, this doesn't help
|
|
# reduce building time because Travis CI doesn't use cache.
|
|
COPY ShellCheck.cabal .
|
|
RUN cabal update && cabal install --only-dependencies
|
|
|
|
# Copy the rest of the source files, including ShellCheck.cabal again but doesn't matter
|
|
COPY . .
|
|
|
|
# Build
|
|
RUN cabal install
|
|
|
|
# Test
|
|
RUN cabal test
|
|
|
|
# # ------------------------------------------------------------
|
|
# # Set PATH
|
|
# # ------------------------------------------------------------
|
|
|
|
# Add runtime path to easily reach the executable file. This only exists during build.
|
|
ENV PATH "/root/.cabal/bin:$PATH"
|
|
|
|
# Make it permanent for someone who login to the container of this image
|
|
RUN echo "export PATH=${PATH}" >> /etc/profile
|
|
|
|
# # ------------------------------------------------------------
|
|
# # Extract Binaries
|
|
# # ------------------------------------------------------------
|
|
|
|
# Get shellcheck binary
|
|
RUN mkdir -p /package/bin/
|
|
RUN cp $(which shellcheck) /package/bin/
|
|
|
|
# Get shared libraries using magic
|
|
RUN mkdir -p /package/lib/
|
|
RUN ldd $(which shellcheck) | grep "=> /" | awk '{print $3}' | xargs -I '{}' cp -v '{}' /package/lib/
|
|
|
|
|
|
# Copy shellcheck package out to mounted directory
|
|
CMD ["cp", "-avr", "/package", "/mnt/"]
|