Dockerfile 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. FROM ubuntu:latest
  2. LABEL maintainer="Kassapa"
  3. ENV DEBIAN_FRONTEND="noninteractive"
  4. RUN apt update
  5. RUN apt -y upgrade
  6. RUN apt install -y lsb-release apt-utils \
  7. debian-keyring debian-archive-keyring apt-transport-https software-properties-common curl wget gnupg
  8. RUN add-apt-repository -y ppa:ondrej/php
  9. # https://launchpad.net/~deadsnakes/+archive/ubuntu/ppa
  10. RUN add-apt-repository -y ppa:deadsnakes/ppa
  11. # https://launchpad.net/~ondrej/+archive/ubuntu/php
  12. RUN apt install -y zip unzip vim locales locales-all rsync openssh-client telnet sshpass pwgen screen \
  13. tzdata tree asciidoc doxygen imagemagick ffmpeg fonts-dejavu-extra texlive-full \
  14. git cmake build-essential ninja-build \
  15. redis-tools postgresql-client mariadb-client \
  16. php8.1-fpm php8.1-mbstring php8.1-xml php8.1-bcmath php8.1-curl php8.1-zip \
  17. php8.1-mysql php8.1-pgsql php8.1-sqlite3 php8.1-redis php8.1-mongodb php8.1-amqp php8.1-zmq \
  18. php8.1-imagick php8.1-gd php8.1-intl php8.1-soap \
  19. php8.4-fpm php8.4-mbstring php8.4-xml php8.4-bcmath php8.4-curl php8.4-zip \
  20. php8.4-mysql php8.4-pgsql php8.4-sqlite3 php8.4-redis php8.4-mongodb php8.4-amqp php8.4-zmq \
  21. php8.4-imagick php8.4-gd php8.4-intl php8.4-soap \
  22. python3.13-venv python3.13-dev
  23. RUN apt clean
  24. RUN apt autoremove
  25. RUN echo "en_US.UTF-8 UTF-8" > /etc/locale.gen
  26. RUN locale-gen
  27. RUN update-alternatives --set editor /usr/bin/vim.basic
  28. RUN python3.13 -m ensurepip --upgrade
  29. # RUN useradd -s /bin/bash -m deploy
  30. # RUN passwd -l deploy
  31. # RUN echo 'deploy ALL=(ALL:ALL) NOPASSWD: ALL' > /etc/sudoers.d/101-deploy
  32. # USER deploy
  33. RUN mkdir $HOME/local $HOME/tmp $HOME/downloads
  34. # https://github.com/sdkman/sdkman-cli
  35. # https://docs.gradle.org/current/userguide/compatibility.html
  36. ENV JDK_VERSION="21.0.2-open"
  37. RUN curl -s "https://get.sdkman.io" | bash
  38. RUN sed -i -e 's/sdkman_auto_answer=false/sdkman_auto_answer=true/g' $HOME/.sdkman/etc/config
  39. RUN bash -c ". $HOME/.sdkman/bin/sdkman-init.sh \
  40. && sdk install java ${JDK_VERSION} \
  41. && sdk install maven \
  42. && sdk install gradle \
  43. && sdk install kotlin"
  44. # https://github.com/nvm-sh/nvm
  45. ENV NVM_VERSION="v0.40.3"
  46. RUN git clone -b ${NVM_VERSION} https://github.com/nvm-sh/nvm.git $HOME/.nvm
  47. RUN echo 'export NVM_DIR="$HOME/.nvm"' >> $HOME/.bashrc
  48. RUN echo '[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"' >> $HOME/.bashrc
  49. RUN echo '[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"' >> $HOME/.bashrc
  50. RUN bash -c ". $HOME/.nvm/nvm.sh \
  51. && nvm install --lts \
  52. && npm install -g yarn"
  53. # https://getcomposer.org/doc/00-intro.md#installation-linux-unix-macos
  54. RUN wget -q -O $HOME/downloads/composer https://getcomposer.org/installer
  55. RUN cd $HOME/downloads && php composer && mv composer.phar /usr/local/bin/composer
  56. RUN echo "$(date -u +%4Y%m%d%H%M%S)" | tee /VERSION
  57. VOLUME /srv
  58. WORKDIR /srv
  59. CMD ["/bin/bash", "-l"]