racket.dockerfile 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. FROM debian:stretch-slim AS debian
  2. ARG DEBIAN_FRONTEND=noninteractive
  3. ARG TERM=linux
  4. RUN echo 'APT::Get::Install-Recommends "false";' > /etc/apt/apt.conf.d/00-general \
  5. && echo 'APT::Get::Install-Suggests "false";' >> /etc/apt/apt.conf.d/00-general \
  6. && echo 'APT::Get::Assume-Yes "true";' >> /etc/apt/apt.conf.d/00-general \
  7. && echo 'APT::Get::force-yes "true";' >> /etc/apt/apt.conf.d/00-general
  8. FROM debian AS racket
  9. ARG RACKET_VERSION=7.8
  10. RUN apt-get update -q \
  11. && apt-get install --no-install-recommends -q -y \
  12. ca-certificates curl libcurl3-gnutls \
  13. && rm -rf /var/lib/apt/lists/* \
  14. && curl -L -o racket-install.sh \
  15. -O http://mirror.racket-lang.org/installers/${RACKET_VERSION}/racket-minimal-${RACKET_VERSION}-x86_64-linux-cs.sh \
  16. && echo "yes\n1\n" | sh racket-install.sh --create-dir --unix-style --dest /usr/ \
  17. && rm racket-install.sh
  18. ENV SSL_CERT_FILE="/etc/ssl/certs/ca-certificates.crt"
  19. ENV SSL_CERT_DIR="/etc/ssl/certs"
  20. RUN apt-get update -q \
  21. && apt-get install --no-install-recommends -q -y nginx redis-server
  22. FROM racket AS builder
  23. RUN raco pkg install -D --auto compiler-lib db-lib redis-lib threading-lib unix-socket-lib web-server-lib
  24. WORKDIR /racket
  25. ADD . .
  26. RUN raco make app.rkt \
  27. && raco exe app.rkt
  28. FROM racket
  29. RUN apt-get update -q \
  30. && apt-get install --no-install-recommends -q -y gettext-base
  31. WORKDIR /racket
  32. COPY --from=builder /racket/app .
  33. ADD config config
  34. ADD scripts scripts
  35. EXPOSE 8080
  36. CMD ["/racket/scripts/run"]