commit 42adc890d2f7dd438bc7c9720b8d338abd54275c Author: siah Date: Wed Oct 2 16:28:37 2024 +0200 Dockerfile kontenera nr 1 diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..5f369e0 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,121 @@ +# https://stackoverflow.com/questions/40330039/using-pyenv-activate-in-a-dockerfile +FROM debian:latest + +RUN apt-get update +RUN apt-get install -y \ + sudo iproute2 iputils-ping ifupdown \ + tmux nano mc git curl cmake \ + npm + +RUN apt-get install -y \ + make build-essential libssl-dev zlib1g-dev \ + libbz2-dev libreadline-dev libsqlite3-dev wget llvm libncurses5-dev \ + libncursesw5-dev xz-utils libffi-dev liblzma-dev + +RUN apt-get install -y \ + default-libmysqlclient-dev pkg-config + +RUN useradd -ms /bin/bash user && echo "user:pass" | chpasswd && adduser user sudo + +USER user +WORKDIR /home/user + +# install pyenv +RUN git clone https://github.com/pyenv/pyenv .pyenv + +# install pyenv-virtualenv +RUN git clone https://github.com/pyenv/pyenv-virtualenv .pyenv/plugins/pyenv-virtualenv + +ENV HOME /home/user +ENV PYENV_ROOT $HOME/.pyenv +ENV PATH $PYENV_ROOT/shims:$PYENV_ROOT/bin:$PATH + +RUN echo 'export PYENV_ROOT="$HOME/.pyenv"' >> .bashrc +RUN echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> .bashrc +RUN echo 'eval "$(pyenv init -)"' >> .bashrc + +RUN echo 'eval "$(pyenv virtualenv-init -)"' >> .bashrc + +RUN bash -i -c "source ~/.bashrc && env PYTHON_CONFIGURE_OPTS="--enable-shared" pyenv install 3.9.18" +# RUN bash -i -c "source ~/.bashrc && pyenv local 3.9 && pip install jupyter jupyter-core" + +RUN bash -i -c "source ~/.bashrc && pyenv virtualenv 3.9.18 p3.9" + +# Install Poetry +# RUN bash -i -c "source ~/.bashrc && pyenv activate p3.9 && \ +# curl -sSL https://install.python-poetry.org | POETRY_HOME=~/opt/poetry python && \ +# ~/opt/poetry/poetry config virtualenvs.create false" + +RUN bash -i -c "source ~/.bashrc && pyenv local 3.9.18 && \ + curl -sSL https://install.python-poetry.org | POETRY_HOME=~/opt/poetry python" + +# RUN bash -i -c "source ~/.bashrc && \ +# echo 'export PATH="/home/user/opt/poetry/bin:$PATH"' >> .bashrc" + + +RUN git clone https://github.com/vim/vim + +WORKDIR /home/user/vim +RUN bash -i -c "source ~/.bashrc && pyenv activate p3.9 && \ + LDFLAGS=-rdynamic ./configure \ + --with-features=huge \ + --enable-fail-if-missing \ + --enable-largefile \ + --enable-multibyte \ + --enable-python3interp \ + --with-python3-command=python3.9 \ + --with-python3-config-dir=$HOME/.pyenv/versions/3.9.18/lib/python3.9/config-3.9-x86_64-linux-gnu\ + --prefix=$HOME" + +RUN make -j`nproc` && make install + +RUN curl -fLo ~/.vim/autoload/plug.vim --create-dirs \ + https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim + +RUN mkdir -p ~/.vim/pack/git-plugins/start + +WORKDIR /home/user/ + +# # https://docs.python.org/3/using/cmdline.html#envvar-PYTHONDONTWRITEBYTECODE +# # Prevents Python from writing .pyc files to disk +ENV PYTHONDONTWRITEBYTECODE 0 + +# # ensures that the python output is sent straight to terminal (e.g. your container log) +# # without being first buffered and that you can see the output of your application (e.g. django logs) +# # in real time. Equivalent to python -u: https://docs.python.org/3/using/cmdline.html#cmdoption-u +ENV PYTHONUNBUFFERED 1 +ENV ENVIRONMENT prod +ENV TESTING 0 + +# Copy poetry.lock* in case it doesn't exist in the repo +COPY ./_confs/* ./ + +# # chown all the files to the app user +# RUN chown -R user:user $HOME + +USER root +RUN apt-get install -y \ + aptitude verilator libusb-1.0-0-dev \ + termshark bridge-utils \ + libboost-all-dev libjsoncpp-dev + +# Install cmake and ELFIO +RUN git clone https://github.com/serge1/ELFIO.git /home/user/ELFIO +WORKDIR /home/user/ELFIO +RUN cmake . +RUN make -j`nproc` && sudo make install + +USER user +RUN bash -i -c "source ~/.bashrc && pyenv activate p3.9 && pip install ipython" +RUN bash -i -c "source ~/.bashrc && pyenv activate p3.9 && pip install mysqlclient sqlalchemy" + +RUN echo 'export PATH=$PATH:/home/user/riscv/riscv/bin' >> ~/.bashrc +RUN echo 'export PATH=$PATH:/home/user/riscv/esp-gdb/riscv32-esp-elf-gdb/bin' >> ~/.bashrc + +RUN echo 'export PATH=$PATH:/home/user/opt/poetry/bin' >> ~/.bashrc + +RUN wget -P ~ https://git.io/.gdbinit + +EXPOSE 8080 + +CMD ["python", "-m", "http.server", "8080"]