You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

170 lines
5.1 KiB

  1. FROM dimti/workspace:7.4
  2. ARG PHP_VERSION=7.4
  3. ###########################################################################
  4. # Laradock non-root user:
  5. ###########################################################################
  6. ARG CUSTOM_PUID=1000
  7. ENV PUID ${CUSTOM_PUID}
  8. ARG CUSTOM_PGID=1000
  9. ENV PGID ${CUSTOM_PGID}
  10. RUN usermod -u ${CUSTOM_PUID} laradock && groupmod -g ${CUSTOM_PGID} laradock
  11. RUN chown -R ${CUSTOM_PUID}:${CUSTOM_PGID} /home/laradock
  12. ###########################################################################
  13. # Set Timezone
  14. ###########################################################################
  15. ARG CUSTOM_TZ=Europe/Moscow
  16. ENV TZ ${CUSTOM_TZ}
  17. RUN ln -snf /usr/share/zoneinfo/$CUSTOM_TZ /etc/localtime && echo $CUSTOM_TZ > /etc/timezone
  18. ###########################################################################
  19. # Additional PHP-extensions:
  20. ###########################################################################
  21. #RUN pecl install igbinary && pecl install -a redis
  22. RUN pecl install -a redis
  23. RUN echo "extension=redis.so" > /etc/php/${PHP_VERSION}/cli/conf.d/20-redis.ini
  24. ###########################################################################
  25. # S3 config
  26. ###########################################################################
  27. USER laradock
  28. COPY ./minio/auth.json /home/laradock/.mc/config.json
  29. ###########################################################################
  30. # Install custom node version
  31. ###########################################################################
  32. USER root
  33. ARG NODE_VERSION
  34. ENV NODE_VERSION ${NODE_VERSION}
  35. RUN if [ ! -z "${NODE_VERSION}" ]; then \
  36. . ~/.bashrc && nvm install ${NODE_VERSION} \
  37. && . ~/.bashrc && nvm alias default ${NODE_VERSION} \
  38. && npm i -g yarn \
  39. && cp -R ~/.nvm/alias /home/laradock/.nvm \
  40. && cp -R ~/.nvm/versions /home/laradock/.nvm \
  41. && chown -R ${CUSTOM_PUID}:${CUSTOM_PGID} /home/laradock/.nvm \
  42. ;fi
  43. ###########################################################################
  44. # Update composer version
  45. ###########################################################################
  46. USER root
  47. ARG COMPOSER_VERSION=1
  48. ENV COMPOSER_VERSION ${COMPOSER_VERSION}
  49. RUN composer self-update # Need for correctly update to actual old branch
  50. RUN composer self-update --${COMPOSER_VERSION}
  51. ###########################################################################
  52. # YADM
  53. ###########################################################################
  54. USER root
  55. SHELL ["/bin/bash", "-c"]
  56. # once please
  57. RUN apt update
  58. RUN apt install -y direnv yadm
  59. RUN curl -sS https://starship.rs/install.sh | sh -s -- -f
  60. USER laradock
  61. RUN yadm clone --bootstrap https://vcs.wpstudio.ru/gitea/dotfiles.git
  62. RUN sed -i 's/#/\\$/g' ${HOME}/.config/starship.toml
  63. ###########################################################################
  64. # SUPERVISOR:
  65. ###########################################################################
  66. USER root
  67. ARG INSTALL_SUPERVISOR=false
  68. RUN if [ ${INSTALL_SUPERVISOR} = true ]; then \
  69. apt install -y supervisor \
  70. ;fi
  71. RUN apt install -y liblzma-dev libbz2-dev libffi-dev libreadline-dev
  72. USER laradock
  73. RUN curl https://pyenv.run | bash
  74. RUN echo '' >> ~/.shell-env.local && \
  75. echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.shell-env.local && \
  76. echo '[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.shell-env.local && \
  77. echo 'eval "$(pyenv init -)"' >> ~/.shell-env.local && \
  78. echo '' >> ~/.shell-env.local && \
  79. echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.shell-env.local && \
  80. echo '' >> ~/.shell-env.local
  81. RUN $HOME/.pyenv/bin/pyenv install 3.9
  82. ARG INSTALL_PYTHON=false
  83. RUN if [ ${INSTALL_PYTHON} = true ]; then \
  84. export PYENV_VERSION=3.9 && \
  85. python -m pip install uvicorn \
  86. ;fi
  87. RUN if [ false = true ]; then \
  88. export PYENV_VERSION=3.9 && \
  89. python -m pip install uvicorn && \
  90. python -m pip install --upgrade supervisor && \
  91. echo_supervisord_conf > /etc/supervisord.conf && \
  92. sed -i 's/\;\[include\]/\[include\]/g' /etc/supervisord.conf && \
  93. sed -i 's/\;files\s.*/files = supervisord.d\/*.conf/g' /etc/supervisord.conf \
  94. ;fi
  95. USER root
  96. RUN apt install -y htop
  97. ###########################################################################
  98. # Tune opts:
  99. ###########################################################################
  100. USER root
  101. ARG PHP_OPT_SHORT_OPEN_TAG=Off
  102. RUN sed -i "s/^short_open_tag = .*/short_open_tag = $PHP_OPT_SHORT_OPEN_TAG/g" /etc/php/${PHP_VERSION}/cli/php.ini
  103. ARG PHP_OPT_MAX_EXECUTION_TIME=600
  104. RUN sed -i "s/^max_execution_time = .*/max_execution_time = $PHP_OPT_MAX_EXECUTION_TIME/g" /etc/php/${PHP_VERSION}/cli/php.ini
  105. ARG PHP_OPT_MEMORY_LIMIT=256M
  106. RUN sed -i "s/^memory_limit = .*/memory_limit = $PHP_OPT_MEMORY_LIMIT/g" /etc/php/${PHP_VERSION}/cli/php.ini
  107. ###########################################################################
  108. # Crontab
  109. ###########################################################################
  110. USER root
  111. # Clean up
  112. RUN apt-get clean && \
  113. rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
  114. COPY ./crontab /etc/cron.d
  115. RUN chmod -R 644 /etc/cron.d
  116. #ENTRYPOINT ["/bin/bash","-c","service supervisor start"]