elixir-plug-ecto.dockerfile 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. FROM erlang:25 AS builder
  2. RUN apt-get update -y && \
  3. apt-get install -y libicu-dev
  4. # elixir expects utf8.
  5. ENV ELIXIR_VERSION="v1.13.4" \
  6. LANG=C.UTF-8
  7. RUN set -xe \
  8. && ELIXIR_DOWNLOAD_URL="https://github.com/elixir-lang/elixir/archive/${ELIXIR_VERSION}.tar.gz" \
  9. && ELIXIR_DOWNLOAD_SHA256="95daf2dd3052e6ca7d4d849457eaaba09de52d65ca38d6933c65bc1cdf6b8579" \
  10. && curl -fSL -o elixir-src.tar.gz $ELIXIR_DOWNLOAD_URL \
  11. && echo "$ELIXIR_DOWNLOAD_SHA256 elixir-src.tar.gz" | sha256sum -c - \
  12. && mkdir -p /usr/local/src/elixir \
  13. && tar -xzC /usr/local/src/elixir --strip-components=1 -f elixir-src.tar.gz \
  14. && rm elixir-src.tar.gz \
  15. && cd /usr/local/src/elixir \
  16. && make install clean \
  17. && find /usr/local/src/elixir/ -type f -not -regex "/usr/local/src/elixir/lib/[^\/]*/lib.*" -exec rm -rf {} + \
  18. && find /usr/local/src/elixir/ -type d -depth -empty -delete
  19. ENV MIX_ENV=prod \
  20. LANG=C.UTF-8
  21. RUN mkdir /app
  22. WORKDIR /app
  23. COPY config ./config
  24. COPY lib ./lib
  25. COPY mix.exs .
  26. COPY mix.lock .
  27. RUN mix local.hex --force
  28. RUN mix local.rebar --force
  29. RUN mix deps.get
  30. RUN mix deps.compile
  31. RUN mix release
  32. FROM debian:bullseye-slim AS app
  33. RUN apt-get update -y && \
  34. apt-get install -y openssl libicu-dev
  35. ENV LANG=C.UTF-8
  36. EXPOSE 8080
  37. RUN adduser -h /home/app -D app
  38. WORKDIR /home/app
  39. COPY --from=builder /app/_build .
  40. # Run the Phoenix app
  41. CMD ["./prod/rel/framework_benchmarks/bin/framework_benchmarks", "start"]