Dockerfile 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. FROM ubuntu:24.04
  2. ARG DEBIAN_FRONTEND=noninteractive
  3. # WARNING: DON'T PUT A SPACE AFTER ANY BACKSLASH OR APT WILL BREAK
  4. # One -q produces output suitable for logging (mostly hides
  5. # progress indicators)
  6. RUN apt-get -yqq update && \
  7. apt-get -yqq install \
  8. -o Dpkg::Options::="--force-confdef" \
  9. -o Dpkg::Options::="--force-confold" \
  10. cloc \
  11. curl \
  12. gcc \
  13. git-core \
  14. gosu \
  15. # Needed for mysqlclient
  16. libmysqlclient-dev \
  17. libpq-dev \
  18. pkg-config \
  19. python3 \
  20. python3-colorama \
  21. python3-dev \
  22. python3-dnspython \
  23. python3-packaging \
  24. python3-pip \
  25. python3-psutil \
  26. python3-psycopg2 \
  27. python3-requests \
  28. siege \
  29. software-properties-common && \
  30. # Ubuntu's equivalent packages are too old and/or broken.
  31. pip3 install \
  32. --break-system-packages \
  33. docker==7.0.0 \
  34. mysqlclient==2.2.4 \
  35. pymongo==4.7.2
  36. # Collect resource usage statistics
  37. ARG DOOL_VERSION=v1.3.1
  38. WORKDIR /tmp
  39. RUN curl -LSs "https://github.com/scottchiefbaker/dool/archive/${DOOL_VERSION}.tar.gz" | \
  40. tar --strip-components=1 -xz && \
  41. ./install.py
  42. # Check if the group ID is already created
  43. ARG GROUP_ID
  44. RUN if ! getent group "$GROUP_ID"; then \
  45. addgroup --gid "$GROUP_ID" user; \
  46. fi
  47. # Check if the user ID is already created
  48. ARG USER_ID
  49. RUN if ! getent passwd "$USER_ID"; then \
  50. adduser --disabled-password --gecos '' --gid "$GROUP_ID" --uid "$USER_ID" user; \
  51. fi
  52. ENV FWROOT=/FrameworkBenchmarks USER_ID="$USER_ID"
  53. ENV PYTHONPATH="$FWROOT"
  54. ENTRYPOINT ["/FrameworkBenchmarks/entrypoint.sh"]