# Wybierz bazowy obraz. Debian jest dobrym wyborem ze względu na pyenv FROM debian:latest # Aktualizacja listy pakietów i instalacja niezbędnych zależności RUN apt-get update && apt-get install -y \ aptitude \ tmux vim-nox nano mc git curl termshark procps \ sudo iproute2 iputils-ping bridge-utils \ ifupdown udev 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 \ sqlite3 default-libmysqlclient-dev pkg-config \ python3-pip \ npm # Ustawienie hasła dla użytkownika root (opcjonalne, do konfiguracji) RUN echo 'root:rootpass' | chpasswd # Dodanie nowego użytkownika `user` z hasłem `pass` i przygotowanie środowiska RUN useradd -m user && echo 'user:pass' | chpasswd && adduser user sudo # Przełączenie na użytkownika `user` USER user WORKDIR /home/user # Ustawienie zmiennych środowiskowych ENV HOME /home/user ENV PYENV_ROOT $HOME/.pyenv ENV PATH $PYENV_ROOT/shims:$PYENV_ROOT/bin:$HOME/.local/bin:$PATH ENV PYENV_VERSION p3.12 # Instalacja pyenv RUN git clone https://github.com/pyenv/pyenv $PYENV_ROOT # Instalacja pyenv-virtualenv RUN git clone https://github.com/pyenv/pyenv-virtualenv $PYENV_ROOT/plugins/pyenv-virtualenv # Dodanie konfiguracji pyenv i pyenv-virtualenv do .bashrc RUN echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc \ && echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc \ && echo 'eval "$(pyenv init --path)"' >> ~/.bashrc \ && echo 'eval "$(pyenv init -)"' >> ~/.bashrc \ && echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc # Instalacja Pythona 3.12 z --enable-shared RUN env PYTHON_CONFIGURE_OPTS="--enable-shared" pyenv install 3.12.0 # Utworzenie środowiska wirtualnego p3.12 RUN pyenv virtualenv 3.12.0 p3.12 # Ustawienie p3.12 jako globalnego środowiska RUN pyenv global p3.12 # Instalacja ipython w środowisku p3.12 RUN pip install ipython # Instalacja Vim-Plug do zarządzania wtyczkami Vim RUN curl -fLo ~/.vim/autoload/plug.vim --create-dirs \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim # Kopiowanie plików konfiguracyjnych vim i tmux COPY --chown=user:user ./_confs/.vimrc /home/user/.vimrc COPY --chown=user:user ./_confs/.tmux.conf /home/user/.tmux.conf # Instalacja wtyczek Vim za pomocą Vim-Plug RUN vim +'PlugInstall --sync' +qall # Instalacja Poetry w środowisku p3.12 RUN curl -sSL https://install.python-poetry.org | python3 - # Kopiowanie projektu do obrazu COPY --chown=user:user . /home/user/fapi # Instalacja zależności za pomocą Poetry z głównego katalogu RUN cd /home/user/fapi && poetry config virtualenvs.create false && poetry install # Uruchomienie aplikacji CMD ["python", "/home/user/fapi/entrypoint.py"]