FROM mitchty/alpine-ghc:latest MAINTAINER Nikyle Nguyen 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/"]