Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 7 additions & 13 deletions dockerfiles/haskell-9.8.Dockerfile
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
FROM haskell:9.8.4-bullseye

WORKDIR /app
# Ensures the container is re-built if go.mod or go.sum changes
ENV CODECRAFTERS_DEPENDENCY_FILE_PATHS="stack.yaml,package.yaml,stack.yaml.lock"

RUN mkdir -p /etc/stack

Expand All @@ -11,24 +12,17 @@ RUN echo "allow-different-user: true" >> /etc/stack/config.yaml
RUN echo "install-ghc: false" >> /etc/stack/config.yaml
RUN echo "system-ghc: true" >> /etc/stack/config.yaml

COPY stack.yaml package.yaml stack.yaml.lock /app/
WORKDIR /app

# Dummy static content to circumvent the /app doesn't exist warning
RUN mkdir /app/app
RUN echo 'main :: IO ()' >> /app/app/Main.hs
RUN echo 'main = putStrLn "Hello, World!"' >> /app/app/Main.hs
# .git & README.md are unique per-repository. We ignore them on first copy to prevent cache misses
COPY . /app/
RUN rm -rf /app/.git /app/README.md

ENV STACK_ROOT=/app/.stack

RUN stack build
RUN stack clean codecrafters-http-server

RUN mkdir /app-cached
RUN mv .stack-work /app-cached/.stack-work
RUN mv .stack /app-cached/.stack

RUN rm -rf /app/app

RUN echo "cd \${CODECRAFTERS_REPOSITORY_DIR} && stack build" > /codecrafters-precompile.sh
RUN chmod +x /codecrafters-precompile.sh

ENV CODECRAFTERS_DEPENDENCY_FILE_PATHS="stack.yaml,package.yaml,stack.yaml.lock"
Loading