fapi/Dockerfile

80 lines
2.7 KiB
Docker

# 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"]