|
| 1 | +FROM debian:bookworm |
| 2 | + |
| 3 | +RUN apt-get update && \ |
| 4 | + apt-get upgrade -y && \ |
| 5 | + apt-get install -y vim curl wget sudo && \ |
| 6 | + apt-get install -y build-essential cmake gdb python3-full && \ |
| 7 | + apt-get install -y clang llvm |
| 8 | + |
| 9 | +# dependency for some puzzles |
| 10 | +RUN apt-get install -y z3 |
| 11 | + |
| 12 | +# to compile Python 3.x |
| 13 | +RUN apt-get install -y libssl-dev liblzma-dev |
| 14 | + |
| 15 | +# seems to be mandatory to compile Python 3.13 |
| 16 | +RUN apt-get install -y libreadline-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev libffi-dev zlib1g-dev |
| 17 | + |
| 18 | +# required to build shapely and numpy, if needed |
| 19 | +RUN apt-get install -y libgeos-dev libopenblas-dev |
| 20 | + |
| 21 | +# Rust |
| 22 | +ENV CARGO_HOME /usr/local/cargo |
| 23 | +ENV RUSTUP_HOME /usr/local/rustup |
| 24 | +ENV PATH "/usr/local/cargo/bin:$PATH" |
| 25 | + |
| 26 | +RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y && \ |
| 27 | + rustup component add rust-src && \ |
| 28 | + chmod 777 /usr/local/cargo |
| 29 | + |
| 30 | +# PyPy |
| 31 | +RUN curl -sL https://downloads.python.org/pypy/pypy3.10-v7.3.15-linux64.tar.bz2 | tar -C /opt -xj && \ |
| 32 | + /opt/pypy3.10-v7.3.15-linux64/bin/pypy3 -mensurepip |
| 33 | + |
| 34 | +# Python 3.10 → 3.13 |
| 35 | +COPY allpython.sh / |
| 36 | +RUN /allpython.sh |
| 37 | + |
| 38 | +# Virtual Environments |
| 39 | +COPY requirements.txt / |
| 40 | +RUN /opt/python/Python-3.10.13/bin/python3.10 -mvenv /venv/py3.10 |
| 41 | +RUN /opt/python/Python-3.11.7/bin/python3.11 -mvenv /venv/py3.11 |
| 42 | +RUN /opt/python/Python-3.12.1/bin/python3.12 -mvenv /venv/py3.12 |
| 43 | +RUN /opt/python/Python-3.13.0a3/bin/python3.13 -mvenv /venv/py3.13 |
| 44 | +RUN /opt/pypy3.10-v7.3.15-linux64/bin/pypy3.10 -mvenv /venv/pypy3.10 |
| 45 | +RUN python3 -mvenv /venv/python |
| 46 | + |
| 47 | +# User environment |
| 48 | +ARG HOST_U=1027 |
| 49 | +ARG HOST_G=100 |
| 50 | +ARG HOST_UN=user |
| 51 | +RUN useradd --create-home --no-user-group -g $HOST_G -u $HOST_U $HOST_UN |
| 52 | +RUN echo "$HOST_UN ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers |
| 53 | +RUN echo 'export SHELL=/bin/bash' >> /etc/bash.bashrc |
| 54 | +RUN echo 'alias ll="ls -l --color"' >> /etc/bash.bashrc |
| 55 | + |
| 56 | + |
| 57 | +# WORKDIR /advent-of-rust |
| 58 | +# RUN curl -sfL https://github.com/rene-d/advent-of-rust/tarball/refs/heads/main | tar -xz --strip-components=1 |
| 59 | +# RUN ln -s /venv .venv |
| 60 | +# RUN ln -s /data data |
| 61 | +# VOLUME /data |
0 commit comments